我有一个简单的规范测试创建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>
答案 0 :(得分:2)
post
没有返回一个模型实例,它返回一个TestResponse对象,可以访问标题,状态代码等。要访问创建的对象作为调用:create action的副作用你可以做Baseline.last
(在这种情况下,Baseline.first也可以工作,因为没有现有的基线对象)
另请注意 - 如果您在控制器中分配了名为@baseline的实例变量,则可以使用assigns(:baseline)
expect(assigns[:baseline]).to be_a(Baseline)