0

在我正在编写的一些测试中,我需要创建很多非常相似的存根。我正在使用摩卡咖啡。

user.stubs(:hq?).returns(false)
user.stubs(:has_role?).with("admin").returns(true)

等等。这是一个非常重复且不枯燥的组合事物。我想知道是否可以将其切换为某种可链接的 dsl。

user = user_stubber.hq.with_role("admin")

在 Mocha 中是否有解决此问题的好方法。还是有更好的存根库可以给我这种能力?

4

1 回答 1

0

我最终的解决方案是我放入 /test/lib/ 中的这个 user_stubber.rb 文件。

require 'mocha'

class UserStubber

  def no_roles
    self.stubs(has_role?: false)
    self
  end

  def hq
    self.stubs(:hq?).returns(true)
    self
  end 

  def field
    self.stubs(:hq?).returns(false)
    self
  end

  def with_role(role)
    self.stubs(:has_role?).with(role).returns(true)
    self
  end
end

在测试中我现在可以做:

user.no_roles.hq.with_role('admin')

等等。而且由于它返回一个可存根的对象,我可以这样做

user.hq.stubs(:other_method).with(params).returns(true)
于 2012-12-19T21:56:12.520 回答