当前位置: 首页 > 知识库问答 >
问题:

水豚和工厂女孩的“电子邮件已被接收”错误

齐典
2023-03-14

我认为这可能与我在这个问题中描述的问题有关。

我不明白为什么在使用Factory Girl创建用户工厂时,Capybara无法在我的rails应用程序上测试注册表单。我不断收到一封电子邮件,邮件已被接收,出现错误。这是我的工厂:

FactoryGirl.define do
  sequence :email do |n|
    "email#{n}@example.com"
  end

  factory :user do
    email
    password "secret"
    password_confirmation "secret"
  end
end

这是我的注册测试:

require "test_helper"

describe "Signup integration" do

  before(:each) do
    visit signup_path
  end

  it "successfully routes to the signup page" do
    page.text.must_include "Sign Up"
  end

  it "signs up a new user" do
    user = FactoryGirl.create(:user)
    fill_in "user_email", :with => user.email
    fill_in "Password", :with => user.password
    fill_in "Password confirmation", :with => user.password_confirmation
    click_button "Create User"
    current_path == "/"
    page.text.must_include "Signed up!"
  end  
end

这是我的test\u助手。rb:

ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "minitest/autorun"
require "capybara/rails"
require "active_support/testing/setup_and_teardown"

class IntegrationTest < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
  register_spec_type(/integration$/, self)

  def last_email
    ActionMailer::Base.deliveries.last
  end

  def reset_email
    ActionMailer::Base.deliveries = []
  end
end

class HelperTest < MiniTest::Spec
  include ActiveSupport::Testing::SetupAndTeardown
  include ActionView::TestCase::Behavior
  register_spec_type(/Helper$/, self)
end

Turn.config.format = :outline

我不太确定这有什么问题。如果我将Capybarasave_and_open_page方法添加到每一行,它可以一直到达密码字段,但Capybara无法填写密码字段。它将唯一的电子邮件地址(如email3@example.com)添加到电子邮件字段,但无法添加工厂女孩密码。如果我在测试中输入纯文本密码(fill_in"Password",: with=

我也不确定它是否也与我在应用程序中的登录测试有关?问题是否是Capybara在登录测试中以另一个用户的身份登录?如果是这样,您如何清理测试中的会话?

最后,这是我的gemfile,以防相关:

source 'https://rubygems.org'

gem 'rails', '3.2.8'
gem 'jquery-rails'
gem 'pg'
gem 'heroku'
gem 'taps'
gem 'sorcery'
gem 'bootstrap-sass'
gem 'simple_form'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

group :test do
  gem 'minitest'
  gem 'capybara'
  gem 'capybara_minitest_spec'
  gem 'turn'
  gem 'factory_girl_rails'
end

共有3个答案

向弘懿
2023-03-14

发生这种情况是因为您对电子邮件列使用了相同的值,该值应该是唯一的

在Gemfile中的“开发、测试”组中,使用gem fake或gem database\u cleaner。

Fakers允许您为记录生成随机值,同时创建记录后清理数据库

翁心思
2023-03-14

数据库清洁器帮助了我。。

gemfile

  gem 'database_cleaner'

minitest\u助手。rb型

  class MiniTest::Spec
    include FactoryGirl::Syntax::Methods
    before :each do
      DatabaseCleaner.clean
    end
  end
杨研
2023-03-14

问题可能在这方面

user = FactoryGirl.create(:user)

试着把它改成

user = FactoryGirl.build(:user)

工厂女孩。创建创建用户对象的实例并将其保存到数据库中<代码>构建创建实例,但不将其保存到数据库。

 类似资料:
  • 我正在使用factory girl和capybara的minitest进行集成测试。当我不使用factory girl创建用户对象时,Capybara工作正常,如下所示: 但是一旦我尝试用工厂女孩创建一个用户,奇怪的事情就开始发生,比如访问方法和click_button方法停止工作。例如,这个测试似乎没有任何问题: 这是我的factories.rb: 下面是我得到的实际错误: 但是,如果我删除了u

  • 问题内容: 我看到很多Node.js模块通过SMTP发送邮件。 但是是否有接收邮件的模块? 问题答案: 您正在寻找一个电子邮件客户端库。目前,有2个选项(如提到这里): 节点imap(IMAP) n3(POP3,实验性) 我以前从未使用过它们,但是用法非常简单(根据文档)。 node-imap 似乎是更稳定的库,并且已针对gmail进行了测试。如果您的环境中可以选择使用IMAP,那么我会坚持使用

  • 我试图从我的应用程序发送电子邮件,我在android上的电子邮件客户端中看到了应有的链接,但当我检查电子邮件接收器时,没有链接。 这是我的代码: “文本”是html。 谢谢你。

  • 问题内容: 我在应用程序中使用了android-parse服务器。下面是解析email列的db屏幕截图。电子邮件列在数据库中隐藏密码列之后。 我的问题是 当我将电子邮件ID检索到电子邮件客户端时,即使电子邮件列中包含电子邮件,电子邮件也为null 。 注意:在另一个地方(另一个表)的应用程序中,我以相同的方式将电子邮件ID拉到电子邮件客户端,但是邮件显示得很好..仅在这里出现问题。 如果有人知道请

  • 我一直在尝试设置AWS简单电子邮件服务,作为一种将收到的电子邮件转发到我的自定义域到我的Gmail帐户的方式,而不需要任何电子邮件托管服务。 我已经设置并验证了我的自定义域(mycustomdomain.com),还验证了它们将转发到的电子邮件地址(myemail@gmail.com)因为我仍然处于沙箱模式。 在电子邮件接收下- 没有指定收件人,我认为这应该允许为我的自定义域下的所有收件人触发此规

  • 将firefox更新到48版,但它给出了以下错误。任何帮助如何解决它: Selenium::WebDriver::错误::WebDriver错误:无法在60秒内从/library/ruby/gems/2.0.0/gems/selenium-webdriver-2.52.0/lib/selenium/webdriver/firefox/launcher获得稳定的firefox连接(127.0.0.1