标签: factory-bot

设置工厂女孩与测试::单位和应该

我正在尝试在Ruby on Rails中使用Test :: Unit和Shoulda设置Factory Girl.我已经安装了gem,在test/factories目录下创建了我的工厂文件,并在test/models目录下创建了我的spec文件.我得到的当前错误是'ArgumentError:No such factory:test',这让我相信test_factory.rb文件没有被加载?知道我应该改变什么?

这是我的文件.

#test/factories/test_factory.rb
Factory.define :test do |t|  
  t.name 'test_spotlight'  
  t.label 'test spotlight label'  
end
Run Code Online (Sandbox Code Playgroud)

#test/modes/test_spec.rb
require 'test_helper'
require 'factory_girl'
class TestTest < Test::Unit::TestCase
  def setup
    @test = Factory.build(:test)
  end

  context "A test" do
    should "save with the minimum requirements" do
      assert @test.save
    end
  end 
end 
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails shoulda testunit factory-bot

16
推荐指数
1
解决办法
1万
查看次数

在Rails 3.1中使用Capybara,Rspec和Selenium进行测试时登录失败

我为我的Rails 3.1应用程序添加了一些确认对话框,在此之前,他们进行了相应的测试.按照Railscast#257的模型,我在测试中添加了':js => true',添加了database_cleaner并相应地修改了spec_helper.rb文件.

当我运行测试时,Firefox启动,Capybara-Selenium在字段中填入相应的用户名和密码,但登录失败(即"无效的用户名/密码".)其他没有':js =的测试> true'并且还登录,仍然通过.

我想在将来为我的应用程序添加更多javascript,并且我正在避免破解Capybara以使其工作的解决方案(例如,在所有对话框上单击"确定".)

我可能会缺少什么想法?失败,有关如何调试此问题的任何建议?

谢谢.

selenium capybara rspec-rails ruby-on-rails-3 factory-bot

16
推荐指数
2
解决办法
2729
查看次数

FactoryGirl:为什么attributes_for省略了一些属性?

我想在控制器测试中使用FactoryGirl.attributes_for,如:

it "raise error creating a new PremiseGroup for this user" do
  expect {
    post :create, {:premise_group => FactoryGirl.attributes_for(:premise_group)}
  }.to raise_error(CanCan::AccessDenied)
end
Run Code Online (Sandbox Code Playgroud)

...但这不起作用,因为#attributes_for省略了:user_id属性.这里的区别#create#attributes_for:

>> FactoryGirl.create(:premise_group)
=> #<PremiseGroup id: 3, name: "PremiseGroup_4", user_id: 6, is_visible: false, is_open: false)
>> FactoryGirl.attributes_for(:premise_group)
=> {:name=>"PremiseGroup_5", :is_visible=>false, :is_open=>false}
Run Code Online (Sandbox Code Playgroud)

请注意:不存在:user_id #attributes_for.这是预期的行为吗?

FWIW,我的工厂文件包含的定义:premise_group:user:

FactoryGirl.define do
  ...
  factory :premise_group do
    sequence(:name) {|n| "PremiseGroup_#{n}"}
    user
    is_visible false
    is_open false
  end
  factory :user do
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3 factory-bot

16
推荐指数
1
解决办法
5346
查看次数

我在哪里确认用FactoryGirl创建的用户?

使用rails,devise,rspec和factorygirl:

试图为我的网站创建一些测试.我正在使用确认模型进行设计,因此当我使用FactoryGirl创建用户时,用户未得到确认.

这是我的工厂.rb:

FactoryGirl.define do
  factory :user do
    full_name             "Aren Admin"
    email                 "aren@example.com"
    password              "arenaren"
    password_confirmation "arenaren"
    role_id               ADMIN
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的rspec测试文件:

require 'spec_helper'

describe "Admin pages" do

  subject { page }

  describe "home page" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit admin_home_path }

    it { should have_content("#{ROLE_TYPES[user.role_id]}") }
  end
end
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为用户未得到确认.通过搜索我很确定我需要使用'确认'方法!并且它属于factories.rb文件,但我不知道在哪里放它.

rspec ruby-on-rails devise-confirmable factory-bot

16
推荐指数
3
解决办法
7066
查看次数

NameError:未初始化的常量工厂

我正在按照本教程开始使用工厂女孩的轨道上的TDD,rspec,我遇到了这个问题我无法理解.

这是我的"工厂".rb(events.rb)

require 'faker'

FactoryGirl.define do
   factory :event do
     name "HIGH"
     genre "house, techno, idb"
     venue_name "Westbourne Studios"
     venue_address "4-6 Chamberlayne Road"
     venue_postcode "NW103JD"
     begin_time "10pm"
     end_time "2am"
     user_id 2
     description "A Super massive party with loads of everything you would want around."
     status true
     venue_id nil
   end
end
Run Code Online (Sandbox Code Playgroud)

这是event_spec.rb:

require 'spec_helper'
require 'factory_girl_rails'

describe Event do

it "has a valid factory" do
  Factory.create(:event).should be_valid
end

  it "is invalid without a name"
  it "is invalid without a genre" …
Run Code Online (Sandbox Code Playgroud)

ruby tdd rspec ruby-on-rails factory-bot

16
推荐指数
2
解决办法
1万
查看次数

Zeus + FactoryGirl ::语法::方法.未定义的方法`create'

我有:

RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
end
Run Code Online (Sandbox Code Playgroud)

哪个适当的工作简单rspec spec/model/user_spec.rb(允许我使用create(:user),而不是FactoryGirl.create(:user)).但是,如果我zeus rspec spec/model/user_spec.rb用来加速我的规格,它会让我失误:

Failure/Error: @user = create(:user)
     NoMethodError:
       undefined method `create' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1:0x007fc8618e4960>
Run Code Online (Sandbox Code Playgroud)

我如何使用这个语法与宙斯?

ruby rspec ruby-on-rails zeus factory-bot

16
推荐指数
1
解决办法
3582
查看次数

FactoryGirl:工厂未注册

我的项目结构如下:

projects/warehouse/core
projects/warehouse/products/bottles
projects/warehouse/products/boxes
Run Code Online (Sandbox Code Playgroud)

在这个项目中,应用程序逻辑,宝石等都在core应用程序中.我boxes为rspec设置了这样的:

projects/warehouse/products/boxes/spec
    /factories
    /models
Run Code Online (Sandbox Code Playgroud)

factories目录包含cubics.rb:

FactoryGirl.define do
  factory :cubic
    id 1
    dimension 12
  end
end
Run Code Online (Sandbox Code Playgroud)

models目录包含cubic_spec.rb:

require 'spec_helper'

describe Boxes::Cubic do
  it "has a valid factory" do
    FactoryGirl.create(:cubic).should be_valid
  end
end
Run Code Online (Sandbox Code Playgroud)

Cubic模型位于products/boxes/app/models/boxes/cubic.rb.

module Boxes
  class Cubic < BoxExBase
    self.table_name = 'containers'
    #validation stuff goes here
  end
end
Run Code Online (Sandbox Code Playgroud)

简单明了.当我执行时,rspec ../products/boxes/spec/models/cubic_spec.rb我得到了ArgumentError:Factory未注册:cubic.我已经尝试在spec_helper.rb中要求factory_girl_rails.我试过修改spec_helper.rb w /

FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryGirl.find_definitions
Run Code Online (Sandbox Code Playgroud)

core包含 …

rspec ruby-on-rails-3.2 factory-bot

16
推荐指数
2
解决办法
1万
查看次数

FactoryGirl:工厂未注册:user(ArgumentError)

使用FactoryGirl以正确的顺序获取所有鸭子很麻烦.

设置极简主义的rails应用程序(3.0.11),factory_girl_rails(1.4.0),factory_girl(2.3.2)和cucumber-rails(1.2.1)以及ruby-1.8.7-p352.

黄瓜测试是:

Feature: a
  Scenario: test factory-girl
    Given the following user exists:
    | name    | email               |
    | Brandon | brandon@example.com |
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

cucumber 
Using the default profile...
"Adam Advertiser"
"a@b.com"
#<User id: nil, name: nil, created_at: nil, updated_at: nil, email: nil>
Feature: a

  Scenario: test factory-girl        # features/users.feature:2
    Given the following user exists: # factory_girl-2.3.2/lib/factory_girl/step_definitions.rb:100
      | name    | email               |
      | Brandon | brandon@example.com |
      **Factory not registered: user (ArgumentError)**
      features/users.feature:3:in `Given the following user exists:'

Failing Scenarios: …
Run Code Online (Sandbox Code Playgroud)

ruby cucumber factory-bot

15
推荐指数
1
解决办法
2万
查看次数

构建具有特征的对象列表

我正在使用factory_girl在我的测试中创建对象,这是我工厂的一个例子:

factory :user do
  name "John"
  surname "Doe"

  trait :with_photo do
    ignore do
      photo_count 1
    end

    after(:create) do |user, evaluator|
      FactoryGirl.create_list(:photo, evaluator.photo_count)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以我可以创建一个像这样的用户:

FactoryGirl.create(:user, :with_photo)
Run Code Online (Sandbox Code Playgroud)

或者没有照片:

FactoryGirl.create(:user) 
Run Code Online (Sandbox Code Playgroud)

或者创建用户列表:

FactoryGirl.build_list(:user, 5)
Run Code Online (Sandbox Code Playgroud)

但是:with_photo,如果我想用照片创建其中五个用户,我如何建立一个具有特征(特质存在)的用户列表?

ruby factory-bot

15
推荐指数
2
解决办法
8360
查看次数

Factory_Girl + RSpec:创建(:用户)时未定义的方法'create'

无法调用"dummy = create(:user)"来创建用户.已经来回走了几个小时.

/home/parreirat/backend-clone/Passworks/spec/models/user_spec.rb:15:in `block (2 levels) in <top (required)>': undefined method `create' for #<Class:0xbcdc1d8> (NoMethodError)"
Run Code Online (Sandbox Code Playgroud)

这是工厂,users.rb:

FactoryGirl.define do

    factory :user do
      email 'heheheheheheh@gmail.com'
      password 'chucknorris'
      name 'luis mendes'
    end

end
Run Code Online (Sandbox Code Playgroud)

这就是我在user_spec.rb中调用FactoryGirl的方式:

require 'spec_helper'

describe 'User system:' do

 context 'registration/login:' do

    it 'should have no users registered initially.' do
      expect(User.count).to eq(0)
    end

    it 'should not be logged on initially.' do
      expect(@current_user).to eq(nil)
    end

    dummy = create(:user)

    it 'should have a single registered user.' do
      expect(User.count).to eq(1)
    end

  end

end
Run Code Online (Sandbox Code Playgroud)

我按照说明将其添加到spec_helper.rb: …

ruby rspec ruby-on-rails factory-bot

15
推荐指数
2
解决办法
1万
查看次数