iOS如何测试调用[[UIApplication sharedApplication] openUrl:someUrl]的方法

时间:2014-01-07 20:14:12

标签: ios objective-c tdd

我想为下面的方法创建测试,我想检查忘记密码是否正确。我是TDD的新手,我想知道你们是否认为这是必要的,我怎样才能实施测试。

- (IBAction)forgotPasswordButtonClicked:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:kForgetPasswordURL]];

}

非常感谢

4 个答案:

答案 0 :(得分:8)

对于OCMock 3,请尝试以下操作:

id mockApplication = OCMClassMock([UIApplication class]);
OCMStub([mockApplication sharedApplication]).andReturn(mockApplication);

OCMVerify([mockApplication openURL:[OCMArg any]]);

This文章帮助了我。

答案 1 :(得分:2)

我用静态方法删除了新类并解决了我的问题我使用了Specta框架中的部分模拟: id mockApplication = [OCMockObject partialMockForObject:[UIApplication sharedApplication]];

我想这是一个更好的解决方案。 (之前我不知道部分嘲笑)

答案 2 :(得分:1)

我能够通过创建一个处理[[UIApplication sharedApplication] openURL:]的新类来实现这一点,我通过在这个新类上添加静态方法来实现这一点。我仍然不确定这是否是一个好方法,但解决了我的问题。

答案 3 :(得分:-1)

您可以创建XCTest来测试以下方法。

但是,您必须为项目创建测试目标,并在测试目标上创建XCTestCase(如果未创建XCTestCase,并创建以名称testForgotPassWordButtonClicked开头的方法)。

要运行测试目标,请为测试目标创建架构并在其上运行测试。