【问题标题】:After updating to rails 5 spec fails with ActionController::Parameters更新到 Rails 5 规范后,ActionController::Parameters 失败
【发布时间】:2017-04-03 10:08:28
【问题描述】:

我正在将 rails 更新到 5.0.1,但规范失败

这个规格是

describe "POST create", :vcr do
    let(:subscription) { mock_model(Subscription).as_null_object }
    before do
      allow(Subscription).to receive(:new).and_return(subscription)
    end

    it "creates a new Subscription" do
      expect(Subscription).to receive(:new).
        with("card_expiration" => "a quick brown fox").
        and_return(subscription)
      post :create, params: { :subscription => { "card_expiration" => "a quick brown fox" }}
    end
end

失败了

Diff:
       @@ -1,2 +1,2 @@
       -[{"card_expiration"=>"a quick brown fox"}]
       +[<ActionController::Parameters {"card_expiration"=>"a quick brown fox"} permitted: true>]

我怎样才能让 ActionController::Parameters 进入期望?

【问题讨论】:

  • 根据您的测试标题,也许您可​​以测试一下参数是否通过。如果您可以验证订阅是否成功,则可以保证参数正确传递。

标签: ruby-on-rails-5 rspec-rails rspec3


【解决方案1】:

您必须更改期望以期望实际的 ActionController::Parameters 对象,如下所示:

 parameters = ActionController::Parameters.new(
        "card_expiration" => "a quick brown fox").permit!

 expect(Subscription).to receive(:new).
        with(parameters).
        and_return(subscription)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多