pus*_*rix 10 testing ruby-on-rails mocking mocha.js ruby-on-rails-3
在我目前的Rails 3应用程序中,我正在进行一些单元测试,以确保只在某些情况下才能更新S3的调用.我不想在测试期间更新S3,因此我使用Mocha来删除行为.有没有办法确保使用mocha调用函数?我看过期望,除非我做错了,似乎我必须这样做:
object.expects(:function_name).once
Run Code Online (Sandbox Code Playgroud)
然而,这并没有产生预期的结果:这将标志如果函数名被调用两次(这是需要的)错误,它不会标志如果只调用一次(因为它应该)错误,但问题是它WILL如果函数被调用零次,则不标记错误.我需要一种方法来确保它被调用.似乎摩卡应该支持这一点,所以也许我做错了.任何帮助将不胜感激.
*****更正:
事实证明我做得对,除了没有自动调用mocha_verify方法.对于遇到类似问题的人,请查看Ole Morten Amundsen的答案:Mocha Mock进行另一次测试
要不就
object.expects(:function_name).twice
Run Code Online (Sandbox Code Playgroud)
或者,如果它有不同的输入,你应该测试它
resultmock = mock
object.expects(:function_name).with(someobject).returns(mock)
resultmock.expects(:something).returns(true)
object.expects(:function_name).with(resultmock)
Run Code Online (Sandbox Code Playgroud)
不知道这是否有帮助,但它应该给你一个启动.仅供参考:'一次'是默认值.祝你好运,做TDD(=测试优先)或嘲笑会很痛苦:)
一定要最后加载mocha,所以它真的被加载了,就像我在这里的回答: Mocha Mock进行另一个测试
尝试:
object.expects(:function_name).at_least_once
Run Code Online (Sandbox Code Playgroud)
看看文档:http://mocha.rubyforge.org/classes/Mocha/Expectation.html#M000042
| 归档时间: |
|
| 查看次数: |
7222 次 |
| 最近记录: |