使用Mocha和Rails 3.1.0,我在Rails测试中看到了非常奇怪的输出。
not all expectations were satisfied
unsatisfied expectations:
- expected exactly once, not yet invoked: #<GitAccess:0xbb5c344>.branches(any_parameters)
satisfied expectations:
- allowed any number of times, invoked once: #<GitAccess:0xbb5c344>.branches(any_parameters)
它说我的“分支”方法从未调用过,而是被调用过一次-在同一个对象上?这怎么可能?我的控制器如下所示:
def create
git_access.branches()
end
我完全不知道这是怎么可能的。
最佳答案
好的,这就是答案。我以某种方式认为.expects只会检查该函数是否被调用。因此,在测试中,我在同一函数调用上具有.expects和.stubs,这使mocha忽略了我的.stubs。
通过在线阅读大量教程,当您要伪造方法的响应时应使用.stubs,而当您要伪造方法的响应时应使用.expects并测试该方法是否被调用。