chr*_*ley 40 testing rspec ruby-on-rails-3 ruby-on-rails-3.2 factory-bot
我一直跟随此介绍到Rails测试和伊夫遇到一个问题,我似乎无法找到解决.我对Rails非常熟悉,但这是我第一次尝试测试.
无论如何,我有一个非常基本的模型测试,甚至没有完全实现,当我尝试运行rspec spec/models/admin_spec.rb.我Admin has a valid factory在行中得到以下错误(完整代码如下)
Admin has a valid factory
Failure/Error: Factory.create(:admin).should be_valid
NameError:
uninitialized constant Factory
# ./spec/models/admin_spec.rb:6:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
我认为FactoryGirl由于某种原因没有被加载,但我认为它应该被自动加载.下面是我的Gemfile的完整代码,/ spec/model/admin_spec.rb和/spec/factories/admins.rb
非常感谢您的帮助
的Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.2'
gem 'mysql2'
gem 'jquery-rails'
gem 'haml'
gem 'bcrypt-ruby', :require => 'bcrypt'
gem 'bootstrap-sass', '~> 2.0.2'
gem 'capistrano'
gem 'json'
gem "paperclip", '~>3.0'
gem 'airbrake'
gem 'acts_as_list'
gem 'nested_form', :git => 'https://github.com/ryanb/nested_form.git'
gem 'bootstrap-wysihtml5-rails'
gem 'will_paginate', '~> 3.0'
gem 'bootstrap-will_paginate'
gem 'thinking-sphinx', '2.0.10'
gem 'sass-rails', '~> 3.1'
gem 'coffee-rails'
gem 'uglifier'
# gem 'compass'
group :development do
gem 'awesome_print'
gem 'wirble'
end
group :development, :test do
gem 'rspec-rails'
gem 'factory_girl_rails'
end
group :production do
gem 'execjs'
gem 'therubyracer'
end
group :test do
# Pretty printed test output
gem 'turn', :require => false
gem 'faker'
gem 'capybara'
gem 'guard-rspec'
gem 'launchy'
end
Run Code Online (Sandbox Code Playgroud)
/spec/factories/admin.rb
require 'faker'
FactoryGirl.define do
factory :admin do |f|
f.name Faker::Name.name
f.email Faker::Internet.email
end
end
Run Code Online (Sandbox Code Playgroud)
/spec/models/admin_spec.rb
require 'spec_helper'
describe Admin do
it "has a valid factory" do
Factory.create(:admin).should be_valid
end
it "is invalid without a name"
it "is invalid without an email"
end
Run Code Online (Sandbox Code Playgroud)
Vik*_*ram 10
事实上在你的spec_helper.rb下Rspec.configure do...end你可以添加
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
Run Code Online (Sandbox Code Playgroud)
这将节省您的前缀的麻烦FactoryGirl. 之前:build和:create干脆:
需要'spec_helper'
describe Admin do
it "has a valid factory" do
create(:admin).should be_valid
end
it "is invalid without a name"
it "is invalid without an email"
end
Run Code Online (Sandbox Code Playgroud)
这不是你的问题的答案,但我注意到你使用FactoryFirl的Faker时出现了一个模糊的错误.对于每个FactoryGirl.create或FactoryGirl.build,f.name和f.email都是相同的.
f.name Faker::Name.name
f.email Faker::Internet.email
Run Code Online (Sandbox Code Playgroud)
在Faker调用周围添加花括号,以便每次对Factory的引用都会生成随机Faker数据.
f.name { Faker::Name.name }
f.email { Faker::Internet.email }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19353 次 |
| 最近记录: |