嘲笑铁轨

时间:2013-03-27 14:11:04

标签: ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

module gameSystem
 Class client
....
...
...

def accounts_by_id(account_id)

      response = query_account(CGI.escape(account_id))
      JSON.parse(response.body)
    end

...
...
...
end

我有上面的代码,其中accounts_by_id方法位于类Client中。此方法返回JSON.parse(response.body)。有谁知道我怎么可以在rails中为这个方法模拟或使用存根来返回一些东西。

1 个答案:

答案 0 :(得分:0)

我使用Mocha来模拟/存根测试函数。这会产生类似

的结果

Client.any_instance.expects(:query_account).with("my-account-id").returns([some object to return])

在测试中调用此函数的行之前。

但是,这不会导致实际的断言,如果没有符合期望的函数调用则会失败,这在我看来并不理想。如果传入的帐户ID不符合预期,则也会失败(尽管不需要with。)

Here是Mocha的文档,因此您可以更好地了解它的使用方法。我提供这个答案是因为这已经完成了我过去所需要的,但我很想知道是否有更好的解决方案。