0

我在使用 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

我完全不明白这怎么可能。

4

1 回答 1

1

好的,这就是答案。我不知何故认为 .expects 只会检查函数是否被调用。所以在我的测试中,我在同一个函数调用上有 .expects 和 .stubs,这使得 mocha 忽略了我的 .stubs。

通过在线阅读一堆教程,当您想要伪造方法的响应时应该使用 .stubs ,而当您想要伪造方法的响应并测试是否调用该方法时,应该使用 .expects 。

于 2012-08-20T18:49:36.853 回答