问题标签 [ocmock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 为什么 OCMock 与我的选择器不匹配?
我有一个像这样的 OCMock 期望:
即使我validateField:target:selector:
在实现中进行调用,模拟的验证也会失败。但是,如果我NULL
在实现和期望中都替换了选择器,则验证通过。显然,NULL
这不是我想要使用的。很明显,问题出在选择器的某个地方。知道为什么这可能不起作用,或者我该如何解决?
objective-c - Obj-C:如何从 NSInvocation 获取和调用块参数 - 在 iOS 上存根 Twitter 帐户
我正在使用 KIF 和 OCMock 测试 iOS 应用程序,对设备进行存根ACAccountStore
以返回我自己的 Twitter 帐户表示。我想存根requestAccessToAccountsWithType
,并用我自己的值调用传递的完成处理程序,但我似乎无法从调用中获取块并正确调用它(EXC_BAD_ACCESS
)。作为 Objective-C 和 iOS 的新手,我确信我在将块从NSInvocation
.
这是生产代码。_accountStore 是从测试设置中注入的。
测试设置代码。
objective-c - 如何模拟类方法(+)?
下面代码需要写单元测试,我想对类方法canMakePayments做mock,返回yes或者no,目前还没有找到好的方法,由于canMakePayments是类方法(+),好像所有的OCMock方法都用于实例方法 (-)。
你们的任何建议或讨论将不胜感激。谢谢。
unit-testing - iPhone单元测试OCMock,如何模拟只读变量?
我们一直都是这样使用OCMock的,但是对于一些只读的属性变量好像不行,比如NavigationController等,是只读的,设置mock一个不生效。
你有没有遇到过这个棘手的问题,你是如何解决的?任何想法将不胜感激,在此先感谢各位聪明人。
objective-c - OCUnit 应用程序测试:尝试测试 UIPageControl numberOfPages == NSArray count
我对 OCUnit 和 OCMock 比较陌生,所以请多多包涵。我有一个包含 UIPageControl 的视图控制器,其中页数是根据 NSArray 的计数(从核心数据填充的)计算得出的。这是在 ViewDidLoad 方法中完成的,如下所示:
日志显示了viewedPages 和numberOfPages 的匹配整数值,幸运的是,如果我运行以下测试,断言为真:
但是,如前所述,此过程依赖于使用包含 Core Data 对象的数组,因此我决定尝试 OCMock 用预定义数组替换它,以有效删除 Core Data 元素。这样做,我现在得到了我不明白的结果。
这是我的新测试的样子:
让我感到困惑的是,在这种情况下,NSLog 显示viewedPages 计数与我创建的模拟数组的计数相匹配(太棒了!)但 numberOfPages 始终为零?结果,测试失败。
我还尝试将在控制器中加载viewedPages数组的函数与测试控制器中的一个本地函数混合,该函数返回一个预定义的数组,即
但是,这与上面的结果完全相同。测试仍然失败,因为 numberOfPages 返回 0,而viewedPages 数组显示了预期的计数。
正如我所说,我是 OCUnit 和 OCMock 的新手,所以我希望这个问题尽可能详细并且有意义。我希望这归结为我对 OCMock 工作原理的误解,有人可以纠正我 - 我将永远感激!不幸的是,对于 iPhone 开发的 OCUnit 和 OCMock 来说,似乎确实缺乏体面的文档供初学者学习,这个小问题已经让我发疯了两天......
先感谢您
singleton - 使用partialMockForObject做单例类mock,如何创建像“removeAllExpectations”这样的方法来删除所有记住的?
对单例的 OCMock 感到困惑,获得两种方法,但在我看来它们都不是完美的。
使用 partialMockForObject。我想使用 partialMockForObject 来做单例类模拟。看下面的代码,效果很好,但是缺点是单例 [NSNotificationCenter defaultCenter] 会记住之前的 mock 行为,然后在另一个地方调用时,它会崩溃,出乎意料。所以我的问题是,我怎样才能创建一个像“removeAllExpectations”这样的方法来删除所有记住的?
id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];
[aMock 期望] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewController 类]]];
[[模拟验证];
使用分类法。见http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/提到了另一种做单例模拟的方法,我个人更喜欢partialMockForObject,单元测试时不需要模拟所有方法。
已将我的问题发送给 OCMock 开发组,但尚未收到回复,需要您的聪明人的意见。任何想法或讨论将不胜感激,在此先感谢。
iphone - 如何在 iPhone 中对这个 hitTest 覆盖进行单元测试?
如何对这个hitTest
覆盖进行单元测试?
我面临的问题是UIEvent
没有公共构造函数,因此我无法创建一个UIEvent
在[super hitTest:point withEvent:event]
.
或者,我可以创建一个 mock UIEvent
,但这意味着知道它会[super hitTest:point withEvent:event]
做什么,而我不知道,即使我这样做了,它也可能会改变。
另一种选择是混合[super hitTest:point withEvent:event]
(使用OCMock),但我不知道是否可以只混合超类实现。
ocmock - 是否可以从部分模拟中“期望”一个方法
这不是最好的做法,但我想验证是否调用了对象的私有方法,因此我创建了一个部分模拟并在私有方法上添加了期望。
当我运行测试时, cleanupPreviousContents 没有被调用,但测试仍然成功。错误在哪里?
问候,昆汀
objective-c - 如何调试因模拟对象而失败的 NSPredicate?
我有一个核心数据应用程序,它在其获取请求之一中使用 NSPredicate。该谓词定义如下:
我将此谓词应用于获取请求并运行它,它可以按预期工作:至少它可以处理我目前数据存储中有限数量的数据。
我现在正在尝试为此代码编写一组单元测试。为此,我使用 OCMock 创建一个 NSManagedObjectContext ,并使用我自己的测试实现将其 executeFetchRequest 存根:
所以基本上,我试图采用被定义为针对核心数据获取请求运行的 NSPredicate,并针对一组模拟对象运行它。模拟对象都实现了 homeTeam 和 awayTeams 方法,因此就谓词而言,这应该有效。不幸的是,当对我的 dta 数组运行 filtersArrayUsingPredicate 时,它返回一个空数组。我真的很想弄清楚这一点,而且我不确定如何有效地调试这个。
所以我在这里有两个问题,真的:
- 我在这里遗漏了为什么对实现谓词中引用的属性的模拟对象数组(NSProxy 子类的实例)使用filteredArrayUsingPredicate 的原因吗?
- 假设没有明显的原因,任何人都可以建议一种有效的方法来调试它,看看它是什么 filtersArrayUsingPredicate 在这里评估以及为什么它对我来说失败了?
感谢您的任何帮助,您可以提供
objective-c - 如何在 ARC 下获得 OCMock 以停止使用弱属性来取消 NSProxy 子类集?
在 下ARC
,我有一个对象,Child
它有一个weak
属性,parent
。我正在尝试为 编写一些测试Child
,并且我正在parent
使用OCMock
.
在 ARC 下,NSProxy
使用综合的弱属性设置器设置子类不会设置属性...设置弱属性之后的行,检查它表明它已经是nil
. 这是一个具体的例子:
我知道我可以使用assign
属性而不是引用的weak
属性来解决这个问题,但是当我完成它时我必须退出(就像某种穴居人),这正是那种ARC应该避免的事情。Child
Parent
nil
parent
关于如何在不更改我的应用程序代码的情况下通过此测试的任何建议?
编辑:它似乎与OCMockObject
成为一个有关NSProxy
,如果我做aParent
一个实例NSObject
,child.parent
弱引用“持有”一个非零值。仍在寻找一种在不更改应用程序代码的情况下通过此测试的方法。
编辑 2:在接受 Blake 的回答后,我在我的项目中执行了一个预处理器宏的实现,它有条件地将我的属性从弱 -> 分配。你的旅费可能会改变: