Ruby on rails 使用minitest和夹具进行钢轨模型试验
我有一个小测验:Ruby on rails 使用minitest和夹具进行钢轨模型试验,ruby-on-rails,ruby-on-rails-4,fixtures,minitest,Ruby On Rails,Ruby On Rails 4,Fixtures,Minitest,我有一个小测验: class CompanyTest < ActiveSupport::TestCase def setup @company = companies(:default) end test 'permalink should present' do @company.permalink = " " assert_not @company.valid? end end 我对公司模型(company.rb)进行了验证: 令人惊
class CompanyTest < ActiveSupport::TestCase
def setup
@company = companies(:default)
end
test 'permalink should present' do
@company.permalink = " "
assert_not @company.valid?
end
end
我对公司模型(company.rb)进行了验证:
令人惊讶的是,测试失败了
test_0001_permalink should present FAIL (95.55s)
Minitest::Assertion: Expected true to be nil or false
test/models/company_test.rb:31:in `block in <class:CompanyTest>'
在这里,记录仍然具有permalink作为默认值
[1] pry(#<ActiveRecord::Validations::PresenceValidator>)> record
=> #<Company:0x007f9ca5375070
id: 593363170,
name: "default",
created_at: Wed, 15 Apr 2015 17:59:56 UTC +00:00,
updated_at: Wed, 15 Apr 2015 17:59:56 UTC +00:00,
website: "www.example.com",
permalink: "default"
[1]撬动(#)>记录
=>#您已经添加了一个before\u validation,当您调用valid?
方法时,它会在before\u validation钩子之前触发,当您将其设置为公司名称时,在本例中,comapny的名称为default
,这样您就可以在控制台中将其设置为“default”。
您正在将permalink显式设置为before\u validation hook,并测试它是否存在无效的情况,这是不可能的。您确定要断言\u not@company.valid吗?您正在测试一家无效的公司?看起来它得到了一个空白的“默认值”。你说得对。我已经弄明白了,并在编辑区发布了几分钟。不知怎的,它没有得到拯救!谢谢
test_0001_permalink should present FAIL (95.55s)
Minitest::Assertion: Expected true to be nil or false
test/models/company_test.rb:31:in `block in <class:CompanyTest>'
class PresenceValidator < EachValidator # :nodoc:
def validate_each(record, attr_name, value)
binding.pry
record.errors.add(attr_name, :blank, options) if value.blank?
end
end
[1] pry(#<ActiveRecord::Validations::PresenceValidator>)> record
=> #<Company:0x007f9ca5375070
id: 593363170,
name: "default",
created_at: Wed, 15 Apr 2015 17:59:56 UTC +00:00,
updated_at: Wed, 15 Apr 2015 17:59:56 UTC +00:00,
website: "www.example.com",
permalink: "default"