问题标签 [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.
objective-c - 使用带有 OCMock 或 Hamcrest 的结构
我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。OCMock 咳出了一个毛球,所以我试着用 Hamcrest 火柴盒包裹起来。没有死。我正在测试的函数/方法如下所示:
我使用这样的代码:
这有点工作。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条...错误..绿色按钮。当我确定我的测试应该通过时,我得到断言失败错误。这些错误告诉我该方法被意外调用并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我无处可去。我正准备破解我的调试器,这无疑会告诉我出了什么问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的问题吗?如果是这样,处理这些类型的最佳方法是什么?
iphone - 测试 NSURLConnection 与 HTTP 响应错误状态的使用
我正在编写一个需要从 Web 服务器获取一些数据的 iPhone 应用程序。我NSURLConnection
用来执行 HTTP 请求,效果很好,但是在响应具有 HTTP 错误代码(如 404 或 500)的情况下,我无法对代码进行单元测试。
当服务器返回错误时,连接不会调用connection:didFailWithError:
委托,而是调用connection:didReceiveResponse:
, connection:didReceiveData:
, and connectionDidFinishLoading:
。我目前正在检查响应中的状态代码,并在状态代码看起来像错误时connection:didReceiveResponse:
调用连接以防止被调用,从而报告成功的响应。cancel
connectionDidFinishLoading:
提供静态存根NSURLConnection
很简单,但我希望我的测试在调用模拟连接的方法之一时改变它的行为。具体来说,我希望测试能够判断代码何时调用cancel
了模拟连接,因此测试可以停止调用connection:didReceiveData:
和connectionDidFinishLoading:
委托。
有没有办法让测试判断是否cancel
已在模拟对象上调用?有没有更好的方法来测试使用的代码NSURLConnection
?有没有更好的方法来处理 HTTP 错误状态?
objective-c - 如何对 Objective-C 中方法内部的对象进行单元测试?
我想知道如何进行测试。我有一个采用参数的方法,并根据该参数的某些属性创建另一个对象并对其进行操作。代码看起来像这样:
我要验证的是,如果 context.isValid 为真,则在 dest 上调用 doSomething,但我不知道如何使用 OCMock 或任何其他传统测试方法来测试它(或者是否可能),因为该对象是完全在方法的范围内创建。我会以错误的方式解决这个问题吗?
iphone - 我怎样才能让 OCMock 让我在 UIKit 类上存根类别方法?
我试图在我的应用程序测试中模拟一个 UITabBarController 。我在另一个文件中的其他地方定义了该类的类别方法,该方法与我的测试类中的 ocmock 一起导入。我想要这样做的是:
但是当我这样做并且测试进入该存根调用时,我收到一条错误消息:
我需要做些什么来让 ocmock 识别内置框架类的类别方法吗?
objective-c - 如何模拟在 OCMock 中接受句柄作为参数的方法?
我正在尝试模拟具有等效于以下签名的方法:
我希望它返回一个小字典,以便我的测试可以确保代码正确使用字典。然而,无论我做什么,OCMock 总是从方法中返回 nil,不管我如何存根。错误在我正在测试的代码中以 nil 开头,这些是我尝试存根的不同方式:
他们都没有工作。OCMock 是否支持将句柄作为存根消息参数,如果支持,正确的方法是什么?
dependency-injection - 更喜欢依赖注入而不是部分模拟?
我知道这个SO question,但它以更笼统的方式处理该主题。
我应该更喜欢使用部分模拟而不是依赖注入吗?我的问题基于 OCMock 的以下引用:
创建一个可以像 anObject 一样使用的模拟对象。当一个没有被存根的方法被调用时,它将被转发一个对象。当使用对 anObject 的引用而不是 mock 调用存根方法时,它仍将由 mock 处理。
这意味着我可以使用部分模拟而不是在构造函数中(或通过 setter 注入)注入我的(属性)依赖项。
iphone - OCMock 返回值
我正在尝试为输出取决于 NSDate 的 timeIntervalSinceNow 返回值的方法编写测试。我想在我的测试中指定返回值,以便我可以测试某些场景。
我很难让这个 OCMock 对象返回我想要的东西。这是我的代码:
这会生成“错误:'typeof”错误之前的预期说明符限定符列表。
有什么想法吗?我是 ObjC 的新手,因此非常感谢任何其他相关提示。
谢谢。
iphone - 使用 OCMock 来预期类别方法会产生“[NSProxy doesNotRecognizeSelector”...]”
我正在使用OCMock尝试测试 NSURLConnection 的行为。这是不完整的测试:
当使用类别方法模拟类时,委托方法connection:didReceiveresponse:是,我收到错误:
有人遇到过这个问题吗?
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 类别对象来完成这种事情吗?
cocoa - OCMock 与 Core Data 动态属性问题
我正在使用 OCMock 来模拟一些核心数据对象。以前,我使用 Objective-C 1.0 风格的显式访问器实现了属性:
现在我已将代码移至 Objective-C 2.0 并希望利用新的 @property 语法和 Core Data 对象的动态生成方法实现:
但是,现在当我创建一个模拟项目时,它似乎无法处理动态属性:
错误如下所示:
做错什么了吗?有没有另一种方法来模拟具有@dynamic 属性的核心数据/对象?