我正在尝试测试,因此用户无法向自己发送消息。目前在我的新消息视图中,我有一个选择框,可以选择系统中除 current_user 之外的所有用户。目前我只有一个不允许用户从选择框中选择自己作为收件人的测试:
it { should_not have_select(:receiver_id, :options => [user.name]) }
然而,这样的考验就够了吗?我是否需要测试创建一条新消息,将 :receiver_id 设置为 current_user 的 id 并检查它?如果是这样,我会将这个规范放在哪里,在模型或请求中?
编辑(在消息模型中添加了一个验证方法,但即使我注释掉了验证行,我的 rspec 也会通过):
编辑 2(错误哈希的测试未通过):
消息.rb:
validate :validate_sender_receiver
def validate_sender_receiver
if self.receiver_id == self.sender_id
errors.add(:receiver_id, "Cannot send message to self")
end
end
messages_spec.rb
describe "sending message to yourself" do
before do
@message = user.sent_messages.new(:receiver_id => user.id)
end
it "should not be valid" do
@message.should_not be_valid
end
it "should set the error hash" do
@message.errors.should include("Cannot send message to self")
end
end