Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用minitest和夹具进行钢轨模型试验_Ruby On Rails_Ruby On Rails 4_Fixtures_Minitest - Fatal编程技术网

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"