Ruby on rails 摩卡咖啡比RSpec'有什么优势;s内置于模拟框架中?
我注意到很多人更喜欢Mocha而不是RSpec的内置模拟框架。有人能解释一下Mocha或任何替代品相对于在模拟框架中构建的RSpec的优势吗?我只使用Mocha一次,因为我不使用RSpec。我使用test/unit,test/unit没有内置stubing和mocking。据我所知,Mocha支持双重注入(也称为部分mocking,在rr中也支持),但不确定RSpec是否也支持此功能Ruby on rails 摩卡咖啡比RSpec'有什么优势;s内置于模拟框架中?,ruby-on-rails,ruby,mocking,rspec,Ruby On Rails,Ruby,Mocking,Rspec,我注意到很多人更喜欢Mocha而不是RSpec的内置模拟框架。有人能解释一下Mocha或任何替代品相对于在模拟框架中构建的RSpec的优势吗?我只使用Mocha一次,因为我不使用RSpec。我使用test/unit,test/unit没有内置stubing和mocking。据我所知,Mocha支持双重注入(也称为部分mocking,在rr中也支持),但不确定RSpec是否也支持此功能 另外,对于那些喜欢在测试框架之间切换的人来说,Mocha是一个通用的解决方案,适用于测试/单元、Shoulda等
另外,对于那些喜欢在测试框架之间切换的人来说,Mocha是一个通用的解决方案,适用于测试/单元、Shoulda等。对所有这些lib使用RSpec mock将是一种过分的做法。我真正喜欢的一个特殊特性是能够剔除类的所有实例。很多时候,我使用RSpec mock执行以下操作:
stub_car = mock(Car)
stub_car.stub!(:speed).and_return(100)
Car.stub!(:new).and_return(stub_car)
有了摩卡咖啡,就变成了:
Car.any_instance.stubs(:speed).returns(100)
我发现Mocha版本更清晰、更明确。自从2009年提出这个问题以来,Ruby mocking框架已经发展了很多。下面是2013年的一个小比较: 期望值
- 使用Rspec模拟:
expect(用户)。接收(:say_hello)
- 使用摩卡:
user.expected(:say_hello)。一次
- 使用Rspec模拟:
user=double(名称:'johndoe')
- 摩卡咖啡:
user=stub(名字:“John Doe”)
- 使用Rspec mock:
User.any\u实例.stub(:name.)和\u return('John Doe')
- 使用Mocha:
User.any_instance.stubs(:name).returns('John Doe')
因此,我想说,选择一种而不是另一种是个人品味的问题(他们的味道非常相似)。任何情况都可能是使用摩卡咖啡的原因。它非常强大,可以节省很多时间。你现在可以用RSpec2做到这一点:是的,这个答案已经过时了。是否可以“取消选中”它?现在是一个独立项目,可用于任何非Rspec项目。现在是一个独立的项目,可以在任何非Rspec项目中使用