首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试来自另一个作用域的方法是否已在控制器中调用

测试来自另一个作用域的方法是否已在控制器中调用
EN

Stack Overflow用户
提问于 2020-01-29 00:14:56
回答 1查看 20关注 0票数 0

我有以下控制器方法:

代码语言:javascript
复制
def create_charge
    payment = Payment.where('order_id = ?', 1).first

    if payment.date <= Date.today
      err = payment.execute_off_session(customer.id, create_in_wms = true)
    else
      order.update_attributes(status: :partially_paid)
    end
end

我需要测试是否调用了execute_off_session。我找不到一个合适的方法来做到这一点:

代码语言:javascript
复制
describe Api::V1::OrdersController, type: :controller do
  describe "#create_charge" do
    context "fingerprinting a card only" do
      it "should'nt call #execute_off_session" do
        payment = instance_double("Payment")
        expect(payment).not_to receive(:execute_off_session)
        post :create_charge, {:params => {:uid => @order.uid}}
      end
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-29 00:54:41

您可以在类的所有实例上设置期望,这并不总是理想的,但它应该适用于您的用例:

代码语言:javascript
复制
describe "expect_any_instance_of" do
  before do
    expect_any_instance_of(Object).to receive(:foo).and_return(:return_value)
  end

  it "verifies that one instance of the class receives the message" do
    o = Object.new
    expect(o.foo).to eq(:return_value)
  end

  it "fails unless an instance receives that message" do
    o = Object.new
  end
end

(源relishapp.com)

在您的案例中:

代码语言:javascript
复制
describe Api::V1::OrdersController, type: :controller do
  describe "#create_charge" do
    context "fingerprinting a card only" do
      it "should'nt call #execute_off_session" do
        expect_any_instance_if(Payment).not_to receive(:execute_off_session)
        post :create_charge, {:params => {:uid => @order.uid}}
      end
    end
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59952870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档