2014-03-19 3 views
1

ReactiveCocoa와 함께 MVVM을 사용하고 테스트를 위해 OCMockito를 사용하고 있습니다. 내가 ViewController A와 ViewController B를 가지고 있다고 가정 해 봅시다. A는 B에 대해 segue를 수행해야합니다.이 경우 A는 필요한 데이터 ('model')를 할당을 통해 B에 전달합니다.OCMockito를 사용하여 읽기 전용 속성의 동작을 확인하려면 어떻게해야합니까?

B은 다음과 같습니다

@interface ViewControllerB : UITableViewController 
@property(nonatomic, readonly) ViewModel *viewModel; 
@end 

어딘가에 뷰 컨트롤러 A에, 거기 성명 :

viewControllerB.viewModel.model = newModel; // passes new data along for B to display 

나는이 할당이 일어나고 있는지 확인하기를 원하지만 viewModel 속성은 읽기 전용입니다. viewModel은 viewController의 init 메소드에 의해 초기화됩니다.

여기 뷰 모델을 어떻게 조롱 할 수 있습니까?

모의 도우미 viewModel을 반환 할 수 있습니다. 그렇다면 https://github.com/jonreid/OCMockito/issues/38은 부분적 모의가 제거되었다고 말합니다. 왜?!

답변

0

'ViewModel'을 허용하고 readonly 속성에 할당하기 위해 init을 수정합니다. 이 후에 모델을 모의 실험하고 설정 호출을 확인할 수 있습니다.

저는 수업을 테스트 할 수 있도록 API를 수정하는 데 큰 팬이 아니지만 아마도이 변경은 자연스럽지 않은 디자인 일 것입니다.

나는 또한 주목한다 - 이중 점 사용법. 이것은 API에 필요한 변경 사항에 대한 저의 명백한 징조입니다

+0

좋은 지적 - 저는 분당 스토리 보드를 사용하고 있으므로 iOS에서 내 View Controller 인스턴스를 처리하도록했습니다. 이것은 너무 고통스러운 이유의 일부입니다 : 나는 전달하고자하는 데이터가 전달되는 별도의'init'을 정의 할 수 없습니다. – fatuhoku