[英]Testing assigns with ActiveModel in Rspec
Using Rspec 3.4, I've got a Message class: 使用Rspec 3.4,我有一个Message类:
class Message
include ActiveModel::Model
end
The following controller spec fails: 以下控制器规格失败:
context "with invalid params" do
it "assigns a newly created but unsaved message as @message" do
post :create, { message: @invalid_attributes }
expect(assigns(:message)).to be_a_new(Message)
The failure message is: 失败消息是:
Failure/Error: expect(assigns(:message)).to be_a_new(Message)
NoMethodError:
undefined method `new_record?' for #<Message:0x00000006dc8a88>
So it looks like rspec calls new_record?
如此看来rspec调用
new_record?
when I call be_a_new(Message)
, and since my Message class does not inherit from ActiveRecord I'm getting this error. 当我调用
be_a_new(Message)
,由于我的Message类未从ActiveRecord继承,因此出现此错误。
How can I test that assigns(:message)
is indeed a new instance of my Message class? 如何测试
assigns(:message)
确实是Message类的新实例?
I've tried the following: 我尝试了以下方法:
# this works, but I don't like it
expect(assigns(:message).to_not be(nil)
# these fail because the instances are not equal
expect(assigns(:message).to eq(Message.new)
expect(assigns(:message).to eql(Message.new)
expect(assigns(:message).to eqeul(Message.new)
expect(assigns(:message).to be(Message.new)
Is then a railsy way of doing this? 那么这是一种卑鄙的方式吗?
我认为您应该尝试以下操作:
expect( assigns(:message) ).to be_kind_of Message
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.