ios – OCMock测试分配一个对象并在其上调用一个方法

ios – OCMock测试分配一个对象并在其上调用一个方法,第1张

概述我终于在我正在研究的项目上强加了一些TDD,并且跑到了边缘……我知道我想要的代码但不知道如何测试它:) 我正在寻找的实现是: - (void) doSomething{ FooBuilder *foo = [[FooBuilder alloc] init]; [foo doSomethingElseWithCompletionBlock:^{ [self some 我终于在我正在研究的项目上强加了一些TDD,并且跑到了边缘……我知道我想要的代码但不知道如何测试它:)

我正在寻找的实现是:

- (voID) doSomething{    FooBuilder *foo = [[FooBuilder alloc] init];    [foo doSomethingElseWithCompletionBlock:^{        [self somethingDone];    }];}

所以我希望我的测试验证a)测试中的方法分配一个新的FooBuilder和b)该方法然后调用对象的方法.

我该怎么做?我开始尝试模拟alloc类方法的路径,但很快就确定在那条路上是疯狂的.

注意我没有用这个测试测试FooBuilder本身,只是合作就在那里.

解决方法 通常,依赖注入用于提供一个完全形成的对象,说“不是要求这个对象,而是在这里,使用它”.但在这种情况下,我们希望能够实例化一个新对象.因此,我们所要做的就是注入一个对象,而不是注入一个对象. “不是创建一个特定的类,而是在这里实例化其中一个.”

依赖注入有两种主要形式:“构造函数注入”(我将坚持使用术语“构造函数”,即使Objective-C将其分为分配和初始化)和“属性注入”.

对于构造函数注入,请在初始化程序中指定类:

- (instancetype)initWithFooBuilderClass:(Class)fooBuilderClass;

对于属性注入,请在属性中指定类:

@property (nonatomic,strong) Class fooBuilderClass;

构造函数注入更清晰,因为它使依赖性变得明显.但你可能更喜欢注入房产.有时候我会从另一个方向开始重构,改变主意.

无论哪种方式,您都可以使用默认的初始化程序来调用-initWithFooBuilderClass:或将属性设置为[FooBuilderClass类].

然后doSomething会这样开始:

- (voID)doSomething{    ID foo = [[self.fooBuilderClass alloc] init];    ...
总结

以上是内存溢出为你收集整理的ios – OCMock测试分配一个对象并在其上调用一个方法全部内容,希望文章能够帮你解决ios – OCMock测试分配一个对象并在其上调用一个方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1020964.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存