首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec - FactoryGirl登录

RSpec - FactoryGirl登录
EN

Stack Overflow用户
提问于 2016-04-22 17:49:13
回答 1查看 152关注 0票数 0

我对工厂女孩来说是全新的,对RSpec一般来说也是很新的。我正试图为用户设置一个标志作为一个工厂。我认为这将是工厂的一个很好的介绍。我认为我设置了工厂,但现在我需要知道如何在实际测试中实现它。我将展示到目前为止我所写的测试,也许我可以得到一些指导。

这里是工厂:

代码语言:javascript
复制
FactoryGirl.define do
  factory :user do

    email "cam@example.com"
    password "password"

  end
end

以下是特性测试:

代码语言:javascript
复制
require "rails_helper"

RSpec.feature "Send a message" do
  scenario "Staff can send a message" do
    visit "/"

    group = Group.create!(name: "Group A")
    user = User.create!(email: "staff@example.com", password: "password")
    fill_in "Email", with: "staff@example.com"
    fill_in "Password", with: "password"
    click_button "Sign in"

    person = Person.create!(groups: [group], phone_number: "+161655555555")
    message = Message.create(body: "Test Message", group_ids: [group.id])
    fill_in "Enter a Message:", with: "Test Message"
    check "message_group_#{group.id}"
    click_button "Send Message"

    expect(page).to have_content("Messages on their way!")
    expect(page).to_not have_content("Body can't be blank")
    expect(page).to_not have_content("Group ids can't be blank")
  end
end

我基本上是想用这块土地造一座工厂。这样我就不用一遍又一遍地重复这段代码了,对吧?

代码语言:javascript
复制
group = Group.create!(name: "Group A")
user = User.create!(email: "staff@example.com", password: "password")
fill_in "Email", with: "staff@example.com"
fill_in "Password", with: "password"
click_button "Sign in"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-22 18:19:10

工厂的目的是创建数据,而不是执行一系列步骤。你想要的是为你做这件事的函数。

类似于这样的东西:

代码语言:javascript
复制
def sign_in
  visit "/"

  group = Group.create!(name: "Group A")
  user = FactoryGirl.create(:user)
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"
end

在你的测试中

代码语言:javascript
复制
scenario "Staff can send a message" do
  sign_in

  # Rest of code
end

代码语言:javascript
复制
before(:each) { sign_in }

scenario "Staff can send a message" do
  # Rest  of code
end

您可以在此文件、spec_helper / rails_helperspec/support/文件中定义此函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36800303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档