ruby-on-rails – 首次RSPEC测试,确保值为1或-1
新程序员在这里.我是一名正在研究Reddit克隆项目的学生.目前我已被介绍给RSPEC.我必须开始编写自己的模型测试以用于进一步的练习.有问题的模型没有创建,它将在下一个任务中.有人可以检查我是否正确完成了这项工作?
规格/型号/ vote_spec.rb describe Vote do describe "validations" do describe "value validation" do it "only allows -1 or 1 as values" do # your expectations here end end end end
以下是我的实施: describe Vote do describe "validations" do before do 2.times { @vote.create(value: 1) } 3.times { @vote.create(value: -1) } 2.times { @vote.create(value: 3) } end describe "value validation" do it "only allows -1 or 1 as values" do expect ( @vote.value ).to eq(-1) end it "only allows -1 or 1 as values" do expect ( @vote.value ).to eq(1) end end end end 最好的祝福. 编辑:这是一个修订版: describe Vote do describe "validations" do before do 2.times { Vote.create(value: 1) } 3.times { Vote.create(value: 0) } 2.times { Vote.create(value: 3) } end describe "value validation" do it "only allows -1 as value" do expect ( @vote.value ).to eq(-1) end it "only allows 1 as value" do expect ( @vote.value ).to eq(1) end it "it prohibits other values" do expect( @vote.value ).to_not be_valid end end end end 我也试过这个代码,它起初工作但现在在下一个任务中失败了: require 'rails_helper' describe Vote do describe "value validation" do it "allows -1" do value = Vote.create(value: -1) expect(value).to be_valid end it "allows +1" do value = Vote.create(value: +1) expect(value).to be_valid end it "prohibits other values" do value = Vote.create(value: 0) expect(value).to_not be_valid end end end ? rspec spec ...FFF Failures: 1) Vote value validation allows -1 Failure/Error: value = Vote.create(value: -1) NoMethodError: undefined method `update_rank' for nil:NilClass # ./app/models/vote.rb:12:in `update_post' # ./spec/models/vote_spec.rb:7:in `block (3 levels) in <top (required)>' 2) Vote value validation allows +1 Failure/Error: value = Vote.create(value: +1) NoMethodError: undefined method `update_rank' for nil:NilClass # ./app/models/vote.rb:12:in `update_post' # ./spec/models/vote_spec.rb:12:in `block (3 levels) in <top (required)>' 3) Vote value validation prohibits other values Failure/Error: expect(value).to eq(false) expected: false got: #<Vote id: nil,value: 0,user_id: nil,post_id: nil,created_at: nil,updated_at: nil> (compared using ==) # ./spec/models/vote_spec.rb:18:in `block (3 levels) in <top (required)>' Finished in 0.30485 seconds (files took 3.28 seconds to load) 6 examples,3 failures Failed examples: rspec ./spec/models/vote_spec.rb:6 # Vote value validation allows -1 rspec ./spec/models/vote_spec.rb:11 # Vote value validation allows +1 rspec ./spec/models/vote_spec.rb:16 # Vote value validation prohibits other values 解决方法
在这个稍微特殊的情况下,您可以使用绝对值.
it "only allows -1 or 1 as values" do expect ( @vote.value.abs ).to eq(1) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |