问题标签 [ochamcrest]

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 投票
2 回答
1373 浏览

xcode - 将 OCHamcrest 添加到 IOS 项目

该项目的文档说只需添加框架和链接器标志,您就可以开始了。经过数小时和数小时的浪费时间后,我发现这不是真的。如果这样做,项目将看不到头文件。你必须把框架放在某个地方,编译器才能找到头文件。就我而言,当我将框架放入 /Developer/Library/Frameworks 并告诉它递归搜索该框架目录(不要摆弄标题搜索目录)时,这有效。

然后我得到的问题是链接失败并显示消息:

我注意到该项目的文档说它已针对 Xcode 4 进行了更新。我在检查了代码后拉下了框架的二进制文件,并浪费了大量时间无法构建框架的 IOS 版本。

文档在这里

我还在该文档中注意到可可说明告诉您将复制文件阶段放入构建中。我试过了。没有改变结果。

上次我掉进水坑是因为库是 C++ 代码。也许这仍然是问题所在。

除非这里有一个快速的解决方案,否则我将重新使用 STAsserts,尽管这种前景令人作呕,但情况要糟糕得多。


更新:重新安装 Xcode。还是不行。有一些便宜的方法可以使这项工作,例如将头文件添加到项目中。做了一篇关于这个的博客文章,带出了一个有同样经历的人。

0 投票
1 回答
445 浏览

ios - ios TDD 与 Kiwi、OCHamcrest 和 OCMockiti,它们可以混合使用吗?

有没有人成功让 OCHamcrest 与 Kiwi 合作?我已经开始了一个 Kiwi 项目,然后我添加了 OCHamcrest 框架并成功构建。

但是,当我尝试使用 hamcrest 在我的 Kiwi 测试文件中断言条件时:

我的测试不会运行。它只是冻结了,我不得不手动杀死它。

主要是我想坚持使用 OCMockito,因为我熟悉并喜欢它(不太喜欢 OCHamcrest)。

我想知道是否有人可以帮助我解决这个问题?

0 投票
1 回答
424 浏览

objective-c - OCHamcrest 匹配器参数与验证时的 Mockito 模拟不兼容

通过以下单元测试,我使用 Mockito 来模拟 NSUserDefaults 但是当我尝试使用 OCHamcrest 匹配器来测试参数是否是 NSDictionary 的实例时,我收到警告:

将“id{HCMatcher}”发送到不兼容类型“NSDictionary *”的参数

谢谢

0 投票
1 回答
600 浏览

ios - 用于 OCMockito 模拟验证的自定义 OCHamcrest 匹配器

我正在使用 OCHamcrest 和 OCMockito 对 iOS 项目进行单元测试。我正在努力理解在对采用参数的方法期望的模拟验证中使用自定义匹配器。特别是,我想验证传递给预期方法的参数之一,但我需要拆开传递的参数才能这样做。为了演示,这是我的测试方法相关部分的内容:

-zkZSensorFound:fromSearchManager:接受一个包含 aEAAccessory作为属性的对象。在我的自定义匹配器中,我需要打开该对象并检查该属性以确保它与accessory此测试方法中的对象相同。像我在这里所做的那样传递到匹配器很容易accessory,但是如何获取传递给参数以在匹配器内部使用的实际对象?或者,我对这一切都错了吗?

更新

我已经接受了@JonReid 的答案,因为它比我炮制的解决方案要优雅得多。尽管如此,我认为我正在使用的东西(感谢这篇博文)可能在其他地方有用:

0 投票
1 回答
3242 浏览

objective-c - 如何在 Kiwi 中为模拟方法设置参数期望

使用 OCMockito 和 OCHamcrest,我可以对模拟方法的参数设置期望,因此:

使用 Kiwi 似乎没有同样简单的方法可以做到这一点。可以使用间谍来捕获参数,例如:

然后检查对捕获对象的期望:

在 Kiwi 中是否有一种不那么笨拙的方法来做到这一点?

(我知道我可能可以在这里使用 hamcrest 匹配器,但目前我正在探索 Kiwi 的能力)。

0 投票
1 回答
1027 浏览

ios - 使用 OCMockito 验证方法调用

我在 ClassA 中有这两种方法

@执行

我的测试如下所示:

但这不起作用,我不断得到:

当调用 onSubmit 时,如何编写一个测试来验证 validateName 是否已执行。

0 投票
1 回答
481 浏览

objective-c - Verify method call with a handle argument on an OCMockito mock

I have an OCMockito mock of a class QuestionBuilder with the method questionsFromJSON:error:. This method accepts a handle (NSError **)error as an argument. How do I verify the method was called?


I’ve tried:

and:


Both issue the error:

testQuestionJSONIsPassedToQuestionBuilder (QuestionCreationTests) failed:
*** -[NSProxy doesNotRecognizeSelector:questionsFromJSON:error:] called!

0 投票
1 回答
815 浏览

ios - 使用 OCMockito 测试发送到模拟协议的参数

美好的一天,我正在使用 OCHamcrest 和 OCMockito 开始我的使用 TDD 方法的路径,它们真的很酷的工具,但有一点我似乎不了解模拟协议并尝试评估参数。

考虑代码附带的示例:

它按预期工作,但是当我尝试使用模拟协议复制它时,它总是通过测试,例如:

在这个测试中,我试图测试参数是 NSArray 类的实例,它不应该通过。你能帮我发现我做错了什么吗?

非常感谢,

路易斯·亚历杭德罗

0 投票
0 回答
127 浏览

objective-c - 返回模拟对象的自定义描述和调试描述值

我经常将 OCMock 与优秀的 OCHamcrest 匹配器一起使用。但是我经常遇到测试失败的消息,这些消息并没有提供应有的帮助。这是因为 OCHamcrest 输出严重依赖对象的“描述”方法返回的值,但 OCMockObject 的默认描述实现非常通用。

有没有推荐的方法让模拟对象返回自定义描述?

我已经尝试在我的模拟对象上存根“描述”方法,但这似乎不起作用。

作为一种解决方法,我创建了一个OCClassMockObject+Description添加方法的类别扩展setMockDescription:,但我希望有一个更官方支持的解决方案。(如果没有,也许我会完善我的并提交拉取请求。)

以下是我想改进的一些结果的示例......

示例断言 #1

失败信息:

示例断言 #2

失败信息:

0 投票
0 回答
404 浏览

ios - 具有原始函数参数的自定义 OCHamcrest 匹配器

我正在尝试编写自己的代码HCMatcher,以便在处理对象集合时简单地使用一些断言。

目前我的测试方法是这样做的:

我将在很多地方做这种断言,所以我想把它简化成这样:

这是我创建自己的 OCHamcrest 匹配器的尝试:

当我尝试使用该hasTotalNumberOfFeedItemCells()功能时,我收到警告并生成错误消息:

  • 函数“hasTotalNumberOfFeedItemCells”的隐式声明在 C99 中无效
  • ARC 不允许将“int”隐式转换为“id”
  • 'hasTotalNumberOfFeedItemCells' 的冲突类型

任何帮助将不胜感激。