简体   繁体   English

rspec:显示动作测试不适用于rails

[英]rspec :show action test not working with rails

I am testing the show action of my rails controller using the following rspec code: 我正在使用以下rspec代码测试rails控制器的show动作:

it "assigns @external_data correctly with data stored" do
  sign_in
  ext_data = ExternalDatum.create!(name: 'Test File')
  get :show, id: ext_data.id
  expect(assigns(:external_data)).to eq(ext_data)
end

However when running this the test is coming back saying: 但是,在运行此测试时,测试会返回:

Failure/Error: expect(assigns(:external_data)).to eq(ext_data)

   expected: #<ExternalDatum id: 33, name: "Test File", url: nil, created_at: "2014-08-19 15:49:13", updated_at: "2014-08-19 15:49:13", description: nil>
        got: nil

   (compared using ==)

The relevant controller code is: 相关的控制器代码为:

class ExternalDataController < ApplicationController
  before_action :set_external_datum, only: [:show, :edit, :update, :destroy]

  def show
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_external_datum
      @external_datum = ExternalDatum.find(params[:id])
    end
end

As you can see - all fairly standard and boilerplate. 如您所见-所有标准和样板。 Any ideas? 有任何想法吗?

The problem is that you are assigning @external_datum , but testing for @external_data . 问题是您正在分配@external_datum ,但正在测试@external_data Change the expectation to read: 将期望更改为:

expect(assigns(:external_datum)).to eq(ext_data)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM