Activerecord RSpec和活动记录验证
我试图验证一部电影的评级是否大于0且小于或等于5,为此,我在RSpec中使用了“be_valid”,当我检查电影标题是否为零时,它似乎起作用,但对评级不起作用 我不明白为什么 型号:Activerecord RSpec和活动记录验证,activerecord,rspec-rails,Activerecord,Rspec Rails,我试图验证一部电影的评级是否大于0且小于或等于5,为此,我在RSpec中使用了“be_valid”,当我检查电影标题是否为零时,它似乎起作用,但对评级不起作用 我不明白为什么 型号: class Movie < ApplicationRecord validates :title, presence: true validates :rating, presence: true, numericality: { greater_than_or_equal_to: 0,less_th
class Movie < ApplicationRecord
validates :title, presence: true
validates :rating, presence: true, numericality: { greater_than_or_equal_to: 0,less_than_or_equal_to: 5, only_integer: true }
end
错误:
Movie
title must be present
rating must be greater than 0 (FAILED - 1)
rating must be less than or equal to 5 (FAILED - 2)
Failures:
1) Movie rating must be greater than 0
Failure/Error: expect(subject.rating).to be_valid
NoMethodError:
undefined method `valid?' for 1:Integer
# ./spec/models/movie_spec.rb:15:in `block (2 levels) in <top (required)>'
2) Movie rating must be less than or equal to 5
Failure/Error: expect(rating).to be_valid
NameError:
undefined local variable or method `rating' for #<RSpec::ExampleGroups::Movie:0x00007f8332f46fc0>
# ./spec/models/movie_spec.rb:20:in `block (2 levels) in <top (required)>'
电影
标题必须存在
评级必须大于0(失败-1)
额定值必须小于或等于5(失败-2)
失败:
1) 电影分级必须大于0
失败/错误:预期(受试者评级)。有效
命名错误:
1:整数的未定义方法“valid”
#./spec/models/movie_spec.rb:15:in'block(2层)in'
2) 电影分级必须小于或等于5
失败/错误:预期(评级)。有效
名称错误:
未定义的局部变量或方法“评级”#
#./spec/models/movie_spec.rb:20:in'block(2层)in'
您应该使用expect(subject.)。在其他两个测试用例中有效。您得到错误是因为您试图验证subject.rating
这是一个整数。您应该使用expect(subject.),以便在其他两个测试用例中有效。您得到错误是因为您试图验证subject.rating
这是一个整数
Movie
title must be present
rating must be greater than 0 (FAILED - 1)
rating must be less than or equal to 5 (FAILED - 2)
Failures:
1) Movie rating must be greater than 0
Failure/Error: expect(subject.rating).to be_valid
NoMethodError:
undefined method `valid?' for 1:Integer
# ./spec/models/movie_spec.rb:15:in `block (2 levels) in <top (required)>'
2) Movie rating must be less than or equal to 5
Failure/Error: expect(rating).to be_valid
NameError:
undefined local variable or method `rating' for #<RSpec::ExampleGroups::Movie:0x00007f8332f46fc0>
# ./spec/models/movie_spec.rb:20:in `block (2 levels) in <top (required)>'