
我已经能够毫无问题地测试所有常用的返回方法.但是我目前难以接受我想要执行的某项测试:
基本上我有一个方法,让我们称之为dologin:
- (IBAction)dologin:(UIbutton *)sender {// Some logic hereif ( //certain criteria to meet) { variable = x; // important variable set here [self performSegueWithIDentifIEr:@"memorableWord" sender:sender];} else { // handler error here} 所以我想测试是否调用segue并设置变量,或者加载MemorableWord视图控制器并且其中的变量是正确的.在dologin方法中设置的变量将传递到prepareForSegue方法中的memorableWord segues’目标视图控制器.
我有Ocmock设置和工作,我也使用XCTest作为我的单元测试框架.有没有人能够进行单元测试以涵盖这种情况?
对于这个领域的信息来说,Google和SO似乎相当简陋.很多关于简单基本测试的例子与iOS测试中更复杂的现实无关.
解决方法 你走在正确的轨道上,你的测试要检查:>点击登录按钮时,将使用loginbutton作为发件人调用dologin
>如果某些条件为YES,请调用performSegue
因此,您实际上应该从登录按钮触发完整流程以执行Sese:
- (voID)testLogin { LoginVIEwController *loginVIEwController = ...; ID loginMock = [OcmockObject partialMockForObject:loginVIEwController]; //here the expect call has the advantage of swallowing performSegueWithIDentifIEr,you can use forwardToRealObject to get it to go all the way through if necessary [[loginMock expect] performSegueWithIDentifIEr:@"memorableWord" sender:loginVIEwController.loginbutton]; //you also expect this action to be called [[loginMock expect] dologin:loginVIEwController.loginbutton]; //mocking out the criteria to get through the if statement can happen on the partial mock as well BOol doSegue = YES; [[[loginMock expect] andReturnValue:Ocmock_VALUE(doSegue)] criteria]; [loginVIEwController.loginbutton sendActionsForControlEvents:UIControlEventtouchUpInsIDe]; [loginMock verify]; [loginMock stopMocking];} 您需要为“条件”实现一个属性,以便有一个可以使用’expect’模拟的getter.
重要的是要意识到“期望”只会模拟1次调用getter,后续调用将失败并显示“调用意外方法…”.您可以使用’stub’来模拟所有调用,但这意味着它将始终返回相同的值.
总结以上是内存溢出为你收集整理的ios – 测试是否在视图控制器方法中调用performSegueWithIdentifier全部内容,希望文章能够帮你解决ios – 测试是否在视图控制器方法中调用performSegueWithIdentifier所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)