Ruby on rails Rspec:显示一个模型&x27;当它';这是无效的
在Rspec测试中,我通常会这样写:Ruby on rails Rspec:显示一个模型&x27;当它';这是无效的,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,在Rspec测试中,我通常会这样写: user.new(...) user.should be_valid 问题是,当测试失败时,我看不到用户对象上的错误。是否有一种很好的方法来重新编写此测试,以便在Rspec输出中看到类似于user.errors.inspect的内容?我已经尝试过user.errors.should\u empty,但它仍然只是说“expected true,get false”。您可以通过定义自定义匹配器来实现这一点。像这样的东西应该能奏效 RSpec::Matchers
user.new(...)
user.should be_valid
问题是,当测试失败时,我看不到用户对象上的错误。是否有一种很好的方法来重新编写此测试,以便在Rspec输出中看到类似于
user.errors.inspect的内容?我已经尝试过user.errors.should\u empty
,但它仍然只是说“expected true,get false”。您可以通过定义自定义匹配器来实现这一点。像这样的东西应该能奏效
RSpec::Matchers.define :be_valid do
match do |actual|
actual.valid?
end
failure_message_for_should do |actual|
"expected that #{actual} would be valid (errors: #{actual.errors.full_messages.inspect})"
end
failure_message_for_should_not do |actual|
"expected that #{actual} would not be valid"
end
description do
"be valid"
end
end
@哈马尔:你可以把这个命名为有效的,它应该可以正常工作。