- (voID)reloadtableVIEwContents{ [self.networkFetcher fetchInfo:^(NSArray *result,BOol success) { if (success) { self.model = result; [self.tableVIEw reloadData]; } }];}
特别是,我想模拟fetchInfo:这样它就会返回一个虚拟结果数组,而不会访问网络,并验证是否在UItableVIEw上调用了reloadData方法,模型应该是它应该是什么.
由于此代码是异步的,我假设我应该以某种方式捕获块并从我的测试中手动调用它.
我怎么能做到这一点?
解决方法 这很容易:- (voID) testDataWasReloadAfterInfoFetched { NetworkFetcher mockedFetcher = mock([NetowrkFetcher class]); sut.networkFetcher = mockedFetcher; UItableVIEw mockedtable = mock([UItableVIEw class]); sut.tableVIEw = mockedtable; [sut reloadtableVIEwContents]; MKTArgumentCaptor captor = [MKTArgumentCaptor new]; [verify(mockedFetcher) fetchInfo:[captor capture]]; voID (^callback)(NSArray*,BOol success) = [captor value]; NSArray* result = [NSArray new]; callback(result,YES); assertthat(sut.model,equalTo(result)); [verify(mockedtable) reloadData];}
我把所有东西放在一个测试方法中,但是将mockedFetcher和mockedtable的创建移动到setUp将在其他测试中保存类似代码的行.
总结以上是内存溢出为你收集整理的ios – 一些涉及块方法和OCMockito的验证全部内容,希望文章能够帮你解决ios – 一些涉及块方法和OCMockito的验证所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)