如何在Cucumber测试中模拟/存根模型

7
场景如下:我的Order模型具有一个after_create方法,用于联系远程支付网关以检索付款URL。 在我的Cucumber测试中,我不想执行此操作,而是返回任意URL。 我的当前Cucumber测试如下:
给定存在一个名为“ Product X”的产品 当我输入我的凭据 并单击“立即订购” 然后我应该被重定向到“任意url”
问题在于如何确保我的订单模型正确设置URL并且不会联系远程支付网关?
3个回答

12

维基也提供了一些有关桩(mock)的建议


更新链接 - Jared

4
在features/support/env.rb文件中,我对我的订单模型进行了monkey-patch以设置任意URL。在这种情况下,可能也可以使用Mocha或其他工具,但是没有必要。
在我的步骤中,我可以像这样检查响应以获取正确的重定向:
Then /^I should be redirected to the payment gateway$/ do
  response.status.should eql("302 Found")
  response.location.should eql(Order.last.payment_url)
end

希望这对其他人也有所帮助。我仍然想知道是否有更好/更清晰的方法来实现这个目标。

2

如果我正确理解你想要做的事情,可以看一下FakeWeb


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接