问题标签 [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.

0 投票
1 回答
1215 浏览

objective-c - 如何使用 ocmock 存根 AppDelegate 上的属性?

在我的应用委托类中,我有一个简单的属性

然后我在这里卸载所有登录视图的应用程序委托功能,这样我就可以保持我的主应用程序委托类很小(ish)

然后在登录应用程序委托上,我有一种方法可以在主导航控制器上推送视图控制器

痛苦的部分是当我在调用这个“启动”方法的视图控制器中时

当我尝试对此进行模拟时,似乎我在应用程序委托上的存根不正确

当我通过 ocunit 运行它时的错误是通常的“未调用预期的方法”

所以我的问题与我存根的方式有关-我可以做一个存根来返回登录模拟,还是我需要手动进入getter?

0 投票
1 回答
228 浏览

objective-c - NSString 类型的属性何时为 [NSNull null]

我正在解析一些 json 以返回基本字符串令牌或错误消息。

证明这一点的测试

一切都很好,直到我将它连接到一个实际的端点 - 只是发现除非我像下面这样修改回调 - 它正在调用两个回调(不是我希望的)

所以 2 部分问题

  1. 为什么我不能写一个测试来证明这一点?每当我将错误或令牌设置为 NULL 或 NSNull 时,它都可以正常工作(但生产工作需要此代码)

  2. 为什么生产代码只会在条件条件下失败!= [NSNull null](但我似乎什么也得不到,但是<null>当我在模拟器中运行它时 NSLog 值时?

请记住,SomeResult 对象上的令牌/错误属性如下所示

0 投票
1 回答
1931 浏览

objective-c - OCMock 测试通过块是否正确执行

如何验证传递块是否正确执行?

我想知道 postalCode, _geocodePending 设置是否正确,但我不知道如何使用 OCMock 执行此操作。

添加代码

0 投票
1 回答
968 浏览

objective-c - 用于本地实例化和作用域变量的 OCUnit 或 OCmock 测试方法。

我是 OCUnit 和 OCMock 的新手,想了解更多关于这种测试方法的信息。

我知道 OCUnit 和 OCMock 创建存根生成模拟对象等的能力......

我有一个特殊的用例,我还不能破解。

这是我对单元测试的问题:

1) NSClassFromString(@"GKLocalPlayer") 是对foundation.h 的调用,我知道它无法存根。

2) [[UIDevice currentDevice] systemVersion] 是函数作用域的本地调用。我的方法调用另一个类(UIDevice)中的方法我想用存根覆盖他们的函数调用,以返回一个固定的答案来练习这个函数的每个路径。

如果在被测函数的范围内实例化类,则不确定是否可以模拟类。

此外,如何测试 #1 之类的 Class 方法。

重构是这里唯一的答案吗?

0 投票
1 回答
1231 浏览

ios - iOS单元测试私有模拟对象?

在我的 XCode 项目中,我有:

  • 控制器
  • (单例)数据库控制器

databaseController 在控制器类中实例化。

如何用模拟对象替换此 databaseController 以验证控制器类的正常运行而不依赖于实际的 databaseController?

注意:
- OCUnit 用于单元测试。
- OCMock 用于创建 Mock 对象。

额外问题:如果 databaseController 不是单例怎么办?

0 投票
1 回答
1301 浏览

ocmock - OCMock只有效一次,奇怪,为什么呢?还是我这边有什么问题?

我想为 TnSettings 做模拟,是的,如果通过以下方法编写代码,它可以工作,问题是我们需要为每个案例编写模拟代码,如果我们只模拟一次然后执行多个案例,那么第二个将报告异常。我使用最新的 OCMock V2.01。

我的问题是,为什么 OCMock 有这样的限制?还是我没有正确使用它?

任何想法或讨论将不胜感激,在此先感谢。

0 投票
1 回答
470 浏览

ios - OCMock 和Return 基于同一个mock 实例的不同值,出乎意料的返回值。

参见#if 0...#endif,如果启用则模拟按预期工作,在调用方法preferencesGeneralUnits 时返回1,如果禁用则模拟仍然返回之前的值0,尽管我们要求他返回1。

我的问题,是 OCMock 错误吗?还是 OCMock 的预期用途?谢谢你。

对 2.0.1 和从最新源代码构建都不好。

任何想法或讨论将不胜感激,在此先感谢。

0 投票
1 回答
637 浏览

objective-c - OCMock - 是否需要调用“验证”来断言在模拟对象上调用了一个方法?

我对 OCMockObject 上的“验证”方法的作用感到困惑,是否有必要调用它来测试是否在模拟对象上调用了方法?即使在执行测试后我实际上没有调用“验证”,如果我没有完全设置要在模拟对象上调用的方法的期望,我仍然会遇到测试失败。

例如:

在测试方法中

0 投票
2 回答
1583 浏览

objective-c - OCMock:检查参数的设置语法

我正在尝试设置要验证的 OCMock。

我有一个协议,TaskManagerDelegate它包含以下方法,

像这样设置我的模拟对象后,

我像这样将对象分配给被测类,

我在我的 taskManager 上调用了一个方法,然后想验证在 TaskManagerDelegate 上调用了 addTasks 方法,并且传递给它的数组只包含一个对象。

到目前为止,我已经使用 OCMArg 类来检测是否传入了参数,但我很难理解如何检查发送的特定类型是否发送到模拟,或者发送到模拟的对象是否通过了某些测试(有一个 .count 正好是一个例子)。我来自 C# 背景,通常会使用 Moq,您可以在其中使用 lamda 函数对发送到模拟对象的参数进行特定检查。

有谁知道如何用 OCMock 做到这一点,或者如果出于某种概念上的原因它是不可能的?

谢谢,

0 投票
1 回答
1072 浏览

objective-c - OCMock 无法识别被调用的选择器

我正在为使用 OCMock 的测试用例而苦苦挣扎。到目前为止,我在几个项目中使用了 OCMock,它总是按我的想法工作。我有以下方法来测试[self setNeedsDisplay]当我设置一个名为image.

属性的设置器image看起来像这样。

你可以看到[self setNeedsDisplay]在setter中被调用。但是当我运行测试时,我收到以下错误:

OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay

看起来好像没有调用该方法。但是,如果我在 setter 方法中设置断点,它会停止并显示该行已由应用程序执行。

你能帮我吗?我不明白我做错了什么......