0
我試圖在我的規格中使用加工程序時收到空陣列。我的猜測是製造商文件尚未加載。如果我在RSpec初始化之後加載製造器文件,則會引發Fabrication::DuplicateFabricatorError
。這裏是我的設置:加載程序未加載
- 軌4.1.4
- rspec的核心3.1.5
- RSpec的護欄3.1.0
- 製造2.11.3
。
# config/application.rb
config.generators do |g|
g.test_framework :rspec, fixture: true
g.fixture_replacement :fabrication, dir: "spec/fabricators"
end
# spec/rails_helper.rb
config.fixture_path = "#{::Rails.root}/spec/fabricators"
config.use_transactional_fixtures = true
這裏是一個要工作,但不是代碼:
# app/models/user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
# spec/fabricators/user_fabricator.rb
Fabricator(:user) do
email { Faker::Internet.email }
password "password"
password_confirmation "password"
end
# spec/models/user_spec.rb
require 'rails_helper'
describe User do
before :each do
@user = Fabricator(:user)
#=> []
end
it "has an email" do
expect(@user.email).to be_a(String)
expect(@user.email.length).to be > 0
end
end
得到一個空數組返回我的製作者後,我跑規格時出現此錯誤:undefined method 'email' for []:Array
。我希望獲得通過的規格。
謝謝保羅!我的規範正在通過這兩個變化。我因爲錯過了拼寫差異而感到很傻,但現在你提到它,這個詞的選擇很有意義。 – Nathan 2014-10-08 16:06:51