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

Ari*_*jan 6 testing ruby-on-rails webrat cucumber

方案如下.我的订单模型有一个after_create,它与远程支付网关联系以检索支付URL.在我的Cucumber测试中,我不想执行此操作,而是返回任意URL.我目前的黄瓜测试看起来像这样:

鉴于有产品"产品X"当我输入我的凭据时我点击"立即订购"然后我应该被重定向到"任意网址"

问题是在哪里/如何确保我的订单模型正确设置网址并且不与远程支付网关联系?

Asl*_*søy 11

维基也有一些关于存根的提示.


Ari*_*jan 4

在 features/support/env.rb 中,我对订单模型进行了猴子修补以设置任意 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
Run Code Online (Sandbox Code Playgroud)

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