【发布时间】:2011-02-27 05:52:56
【问题描述】:
这是测试:
describe "admin attribute" do
before(:each) do
@user = User.create!(@attr)
end
it "should respond to admin" do
@user.should respond_to(:admin)
end
it "should not be an admin by default" do
@user.should_not be_admin
end
it "should be convertible to an admin" do
@user.toggle!(:admin)
@user.should be_admin
end
end
这是错误:
1) User password encryption admin attribute should respond to admin
Failure/Error: @user = User.create!(@attr)
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
# ./spec/models/user_spec.rb:128
我认为错误可能出现在我的数据填充器代码中:
require 'faker'
namespace :db do
desc "Fill database with sample data"
task :populate => :environment do
Rake::Task['db:reset'].invoke
admin = User.create!(:name => "Example User",
:email => "example@railstutorial.org",
:password => "foobar",
:password_confirmation => "foobar")
admin.toggle!(:admin)
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(:name => name,
:email => email,
:password => password,
:password_confirmation => password)
end
end
end
请告诉我是否应该再复制我的代码。
更新:这里是 @attr 的定义位置,位于 user_spec.rb 文件的顶部:
require 'spec_helper'
describe User do
before(:each) do
@attr = {
:name => "Example User",
:email => "user@example.com",
:password => "foobar",
:password_confirmation => "foobar"
}
end
【问题讨论】:
-
@attr是在哪里定义的?你能发布它的内容吗? -
另外,如果有任何帮助,我会关注ruby.railstutorial.org/chapters/…。
标签: ruby-on-rails ruby-on-rails-3 testing rspec