RSpec:#actioncontroller :: testresponse的未定义方法。 testing =“”a =“”dynamic =“”flash =“”message =“”

时间:2016-02-03 09:23:12

标签: ruby-on-rails-4 rspec

=“”

我有一个简单的规范测试创建Baseline类的对象。

SPAIN-FIX

但我明白了。我不知道从哪里开始 - 我不确定为什么我无法访问@baseline的case_id属性。

 it "allows a user to create a baseline score with valid content" do
  expect(@user.baselines.count).to eq(0)
  @baseline = post(:create, :user_id => @user.id, :baseline => valid_attributes)
  expect(response).to redirect_to '/patients/list'
  expect(flash[:notice]).to eq("Baseline scores for case #{@baseline.case_id} was successfully created.")
  expect(Baseline.all.count).to eq(1)
 end

只是为了展示......这些是有效的属性

   NoMethodError:undefined method `case_id' for <ActionController::TestResponse:0x007f8f5ab4f3c0>

1 个答案:

答案 0 :(得分:2)

post没有返回一个模型实例,它返回一个TestResponse对象,可以访问标题,状态代码等。要访问创建的对象作为调用:create action的副作用你可以做Baseline.last(在这种情况下,Baseline.first也可以工作,因为没有现有的基线对象)

另请注意 - 如果您在控制器中分配了名为@baseline的实例变量,则可以使用assigns(:baseline)

访问该变量
expect(assigns[:baseline]).to be_a(Baseline)