簡體   English   中英

在Rspec中使用ActiveModel測試分配

[英]Testing assigns with ActiveModel in Rspec

使用Rspec 3.4,我有一個Message類:

class Message
  include ActiveModel::Model 
end

以下控制器規格失敗:

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)

失敗消息是:

 Failure/Error: expect(assigns(:message)).to be_a_new(Message)
 NoMethodError:
   undefined method `new_record?' for #<Message:0x00000006dc8a88>

如此看來rspec調用new_record? 當我調用be_a_new(Message) ,由於我的Message類未從ActiveRecord繼承,因此出現此錯誤。

如何測試assigns(:message)確實是Message類的新實例?

我嘗試了以下方法:

# 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)

那么這是一種卑鄙的方式嗎?

我認為您應該嘗試以下操作:

expect( assigns(:message) ).to be_kind_of Message

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM