我正在更改代码的某些部分,并且我的测试开始给出错误和警告。
然后我删除了这些测试,因为我无法修复它们。
但是后来我的另一个文件中的测试完全出错了。
以下是我的factories.rb
文件:
FactoryGirl.define do
factory :user do
sequence(:name) { |n| "Person #{n}" }
sequence(:surname) { |n| "Persona #{n}" }
sequence(:email) { |n| "person_persona_#{n}@example.com.eu" }
password "foobar"
password_confirmation "foobar"
# factory :admin do
# admin true
# end
factory :admin do
role "admin"
end
factory :editor do
role "editor"
end
factory :author do
role "author"
end
end
factory :course do
sequence(:title) { |n| "Title #{n}" }
sequence(:objectives) { |n| "Objectives #{n}" }
user_id 1
subject_id 1
student_level_id 1
end
factory :subject do
title "French for Adults"
end
factory :student_level do
title "Advanced"
end
end
这是我的实际测试文件,models/course_spec.rb:
require 'spec_helper'
describe Course do
let (:user) { FactoryGirl.create(:user) }
let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
let (:student_level) { FactoryGirl.create(:student_level) }
before do
# @course = Course.new(user_id: user.id, subject_id: subject_.id, student_level_id: student_level.id,
# title: "French for Us", objectives: "Lorem ipsum")
@course = user.courses.build(title: "French", objectives: "lorem")
@course.subject = subject_
@course.student_level = student_level
end
subject { @course }
it { should respond_to(:user_id) }
it { should respond_to(:subject_id) }
it { should respond_to(:student_level_id) }
it { should respond_to(:title) }
it { should respond_to(:objectives) }
it { should respond_to(:user) }
its(:user) { should == user }
it { should be_valid }
describe "when user_id is not present" do
before { @course.user_id = nil }
it { should_not be_valid }
end
describe "when subject_id is not present" do
before { @course.subject_id = nil }
it { should_not be_valid }
end
describe "when student_level_id is not present" do
before { @course.student_level_id = nil }
it { should_not be_valid }
end
describe "when title is not present" do
before { @course.title = "" }
it { should_not be_valid }
end
describe "when title is too long" do
before { @course.title = "a" * 251 }
it { should_not be_valid }
end
describe "when title is already taken" do
before do
course_with_same_title = @course.dup
course_with_same_title.title = @course.title.upcase
course_with_same_title.save
end
it { should_not be_valid }
end
describe "when objectives are not present" do
before { @course.objectives = "" }
it { should_not be_valid }
end
describe "accessible attributes" do
it "should not allow access user_id" do
expect do
Course.new(user_id: user.id)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
# it "should not allow access subject_id" do
# expect do
# Course.new(subject_id: subject_.id)
# end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
# end
# it "should not allow access student_level_id" do
# expect do
# Course.new(student_level_id: student_level.id)
# end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
# end
end
end
这些是测试输出:
:~/ror/oy$ bundle exec rspec
...............................................................FFFFFFFFFFFFFFFF.................................................
Failures:
1) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
2) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
3) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
4) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
5) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
6) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
7) Course
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
8) Course when user_id is not present
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
9) Course user
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
10) Course when title is already taken
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
11) Course when objectives are not present
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
12) Course accessible attributes should not allow access user_id
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
13) Course when title is too long
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
14) Course when subject_id is not present
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
15) Course when student_level_id is not present
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
16) Course when title is not present
Failure/Error: let (:subject_) { FactoryGirl.create(:subject) } # "_" so that to differenciate from subject test directive
ActiveRecord::RecordInvalid:
translation missing: uzlt.activerecord.errors.messages.record_invalid
# ./spec/models/course_spec.rb:19:in `block (2 levels) in <top (required)>'
# ./spec/models/course_spec.rb:27:in `block (2 levels) in <top (required)>'
Finished in 7.82 seconds
128 examples, 16 failures
Failed examples:
rspec ./spec/models/course_spec.rb:36 # Course
rspec ./spec/models/course_spec.rb:37 # Course
rspec ./spec/models/course_spec.rb:34 # Course
rspec ./spec/models/course_spec.rb:35 # Course
rspec ./spec/models/course_spec.rb:33 # Course
rspec ./spec/models/course_spec.rb:41 # Course
rspec ./spec/models/course_spec.rb:38 # Course
rspec ./spec/models/course_spec.rb:45 # Course when user_id is not present
rspec ./spec/models/course_spec.rb:39 # Course user
rspec ./spec/models/course_spec.rb:76 # Course when title is already taken
rspec ./spec/models/course_spec.rb:82 # Course when objectives are not present
rspec ./spec/models/course_spec.rb:86 # Course accessible attributes should not allow access user_id
rspec ./spec/models/course_spec.rb:65 # Course when title is too long
rspec ./spec/models/course_spec.rb:50 # Course when subject_id is not present
rspec ./spec/models/course_spec.rb:55 # Course when student_level_id is not present
rspec ./spec/models/course_spec.rb:60 # Course when title is not present
Randomized with seed 44955
我想 factory.rb 文件有问题。但是我用其他分支上的相同文件检查了它,实际上没有任何变化。
这里有什么问题?