gpt4 book ai didi

objective-c - Objective-C - 单元测试和模拟对象?

转载 作者:太空狗 更新时间:2023-10-30 03:21:47 24 4
gpt4 key购买 nike

如何对 Objective C 代码进行单元测试? (iPhone)

在 java 和 .Net 等其他语言中,您可以使用依赖注入(inject),以便能够在当前代码中进行单元测试和传递模拟对象。但是,我找不到用于 objective-c 的可靠依赖注入(inject)框架。

假设您想为下面的代码编写单元测试,您如何模拟 MyObject?

- (void) methodToBeTested
{
NSString str = @"myString";
MyObject object = [[MyObject alloc] init];
[object setString:str];
[object doStuff];
[object release];
}

这就是我使用依赖注入(inject)的方式。有没有类似的方法可以在 objective-c 上实现这一点?

@Inject MyObject object;

public void methodToBeTested()
{
String str = "myString";
// object is automatically instantiated (Dependency Injection)
object.setString(str);
object.doStuff();
}

最佳答案

控制反转在 objective-c 中仍然可行。您当然可以在设计类时考虑到基于构造函数或基于属性的依赖注入(inject),但我认为您不会像您习惯的那样找到基于注释的依赖注入(inject)框架。

[[ClassToBeTested alloc] initWithDependency:foo andOtherDepedency:bar];

ClassToBeTested *objectUnderTest = [[ClassToBeTested alloc] init];
objectUnderTest.dependency = foo;
objectUnderTest.otherDependency = bar;

我见过为 Objective-C 构建依赖注入(inject)框架的几种不同方法,包括 https://github.com/mivasi/Objective-IOC但我无法评论它们的成熟度或实用性。

对于对象模拟和 stub ,请查看 OCMock .

关于objective-c - Objective-C - 单元测试和模拟对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com