问题标签 [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 投票
4 回答
2347 浏览

objective-c - 使用带有 OCMock 或 Hamcrest 的结构

我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。OCMock 咳出了一个毛球,所以我试着用 Hamcrest 火柴盒包裹起来。没有死。我正在测试的函数/方法如下所示:

我使用这样的代码:

这有点工作。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条...错误..绿色按钮。当我确定我的测试应该通过时,我得到断言失败错误。这些错误告诉我该方法被意外调用并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我无处可去。我正准备破解我的调试器,这无疑会告诉我出了什么问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的问题吗?如果是这样,处理这些类型的最佳方法是什么?

0 投票
1 回答
16813 浏览

iphone - 测试 NSURLConnection 与 HTTP 响应错误状态的使用

我正在编写一个需要从 Web 服务器获取一些数据的 iPhone 应用程序。我NSURLConnection用来执行 HTTP 请求,效果很好,但是在响应具有 HTTP 错误代码(如 404 或 500)的情况下,我无法对代码进行单元测试。

我使用GTM进行单元测试,使用OCMock进行模拟。

当服务器返回错误时,连接不会调用connection:didFailWithError:委托,而是调用connection:didReceiveResponse:, connection:didReceiveData:, and connectionDidFinishLoading:。我目前正在检查响应中的状态代码,并在状态代码看起来像错误时connection:didReceiveResponse:调用连接以防止被调用,从而报告成功的响应。cancelconnectionDidFinishLoading:

提供静态存根NSURLConnection很简单,但我希望我的测试在调用模拟连接的方法之一时改变它的行为。具体来说,我希望测试能够判断代码何时调用cancel了模拟连接,因此测试可以停止调用connection:didReceiveData:connectionDidFinishLoading:委托。

有没有办法让测试判断是否cancel已在模拟对象上调用?有没有更好的方法来测试使用的代码NSURLConnection?有没有更好的方法来处理 HTTP 错误状态?

0 投票
4 回答
433 浏览

objective-c - 如何对 Objective-C 中方法内部的对象进行单元测试?

我想知道如何进行测试。我有一个采用参数的方法,并根据该参数的某些属性创建另一个对象并对其进行操作。代码看起来像这样:

我要验证的是,如果 context.isValid 为真,则在 dest 上调用 doSomething,但我不知道如何使用 OCMock 或任何其他传统测试方法来测试它(或者是否可能),因为该对象是完全在方法的范围内创建。我会以错误的方式解决这个问题吗?

0 投票
1 回答
1851 浏览

iphone - 我怎样才能让 OCMock 让我在 UIKit 类上存根类别方法?

我试图在我的应用程序测试中模拟一个 UITabBarController 。我在另一个文件中的其他地方定义了该类的类别方法,该方法与我的测试类中的 ocmock 一起导入。我想要这样做的是:

但是当我这样做并且测试进入该存根调用时,我收到一条错误消息:

我需要做些什么来让 ocmock 识别内置框架类的类别方法吗?

0 投票
5 回答
6645 浏览

objective-c - 如何模拟在 OCMock 中接受句柄作为参数的方法?

我正在尝试模拟具有等效于以下签名的方法:

我希望它返回一个小字典,以便我的测试可以确保代码正确使用字典。然而,无论我做什么,OCMock 总是从方法中返回 nil,不管我如何存根。错误在我正在测试的代码中以 nil 开头,这些是我尝试存根的不同方式:

他们都没有工作。OCMock 是否支持将句柄作为存根消息参数,如果支持,正确的方法是什么?

0 投票
1 回答
542 浏览

dependency-injection - 更喜欢依赖注入而不是部分模拟?

我知道这个SO question,但它以更笼统的方式处理该主题。

我应该更喜欢使用部分模拟而不是依赖注入吗?我的问题基于 OCMock 的以下引用:

创建一个可以像 anObject 一样使用的模拟对象。当一个没有被存根的方法被调用时,它将被转发一个对象。当使用对 anObject 的引用而不是 mock 调用存根方法时,它仍将由 mock 处理。

这意味着我可以使用部分模拟而不是在构造函数中(或通过 setter 注入)注入我的(属性)依赖项。

0 投票
1 回答
2123 浏览

iphone - OCMock 返回值

我正在尝试为输出取决于 NSDate 的 timeIntervalSinceNow 返回值的方法编写测试。我想在我的测试中指定返回值,以便我可以测试某些场景。

我很难让这个 OCMock 对象返回我想要的东西。这是我的代码:

这会生成“错误:'typeof”错误之前的预期说明符限定符列表。

有什么想法吗?我是 ObjC 的新手,因此非常感谢任何其他相关提示。

谢谢。

0 投票
2 回答
4291 浏览

iphone - 使用 OCMock 来预期类别方法会产生“[NSProxy doesNotRecognizeSelector”...]”

我正在使用OCMock尝试测试 NSURLConnection 的行为。这是不完整的测试:

当使用类别方法模拟类时,委托方法connection:didReceiveresponse:是,我收到错误:

有人遇到过这个问题吗?

0 投票
5 回答
22224 浏览

iphone - 如何在 OCMock 中存根类方法?

我经常在我的 iPhone Objective-C 单元测试中发现我想要存根一个类方法,例如 NSUrlConnection 的 +sendSynchronousRequest:returningResponse:error: 方法。

简化示例:

运行此程序时,我得到:

我很难找到有关此的任何文档,但我认为 OCMock 不支持类方法。

经过大量谷歌搜索后,我发现了这个提示。它有效,但非常麻烦: http ://thom.org.uk/2009/05/09/mocking-class-methods-in-objective-c/

无论如何在OCMock中可以做到这一点?或者有人能想出一个聪明的 OCMock 类别对象来完成这种事情吗?

0 投票
3 回答
7014 浏览

cocoa - OCMock 与 Core Data 动态属性问题

我正在使用 OCMock 来模拟一些核心数据对象。以前,我使用 Objective-C 1.0 风格的显式访问器实现了属性:

现在我已将代码移至 Objective-C 2.0 并希望利用新的 @property 语法和 Core Data 对象的动态生成方法实现:

但是,现在当我创建一个模拟项目时,它似乎无法处理动态属性:

错误如下所示:

做错什么了吗?有没有另一种方法来模拟具有@dynamic 属性的核心数据/对象?