ruby-on-rails FactoryGirl Rspec Rails用户名称不同

gcxthw6b  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(122)

我是个爱好开发者,没受过教育。我有两个问题与一个2017年Rails项目有关,我想为它编写50个特性规范(特性规范是因为它是rails 5.0.1.rc2,系统规范是5.1)。
在这个项目中,用户被称为风扇。

gem 'rails', '>= 5.0.1.rc2', '< 5.1'
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
  gem 'rspec-rails', '~> 3.5.0'
  gem 'puma', '~> 3.0'
end

group :test do
  gem 'capybara', '~> 2.10.1'
  gem 'factory_girl_rails', '~> 4.7'
  gem 'selenium-webdriver', '~> 3.0.0'
  gem "database_cleaner", "~> 1.5"
  gem 'shoulda-matchers', '~> 3.1'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

字符串
这是我的第一个rspec(写于2017年)。

require "rails_helper"

RSpec.feature "Fans can sign in" do
  let!(:fan) { FactoryGirl.create(:fan) }

  scenario "with valid credentials" do
    visit "/"
    click_link "Log in"
    fill_in "Email", with: fan.email
    fill_in "Password", with: "password"
    click_button "Sign in"
    expect(page).to have_content "NEWS"
    # expect(page).to have_content "Signed in successfully."
    # expect(page).to have_content "#{fan.email}"
  end
end
FactoryGirl.define do
  factory :fan do
    # sequence(:email) { |n| "test#{n}@example.com" }
    email "email"
    password "password"
    first_name "firstname"
    last_name "lastname"
    postal_code "P7A9J5"
    city "Amsterdam"
    state "Ontario"
    country "Canada"
    confirmed_at Time.now
    ...
  end
end

的数据

问题1:

当我运行rspec时,如果我绑定.撬“/”页面控制器,我能找到的是:fan
但在网站上,当前用户被称为current_fan
app/channels/application_cable/connection.rb

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_fan
etc


这将导致整个网站无法使用FactoryGirl。有什么方法可以把两者联系起来吗?

问题二:

在我的本地服务器上,我有一个必须存在的示例变量(@required = RequiredClass.find(1)),它在/控制器中被调用。然而,很明显,我没有将rspec附加到本地服务器上,因为所需的示例不存在,rspec进行了无限循环5次,然后取消了。
如何指明本地数据库并对其进行设置?
我试着加上

routes.default_url_options[:host] = 'localhost:3000'


到config/environments/development.rb的顶部,但它使bundle exec rails路由停止工作。我必须有轨道运行吗?

问题三

我如何连接运行的现场版本的网站,以在实际网站上执行这些测试?
事先非常感谢

0yg35tkg

0yg35tkg1#

FactoryBot(nee Girl)在特性规范期间不会直接与您的应用交互。它用于在数据库中创建记录,然后由在单独的线程或进程中运行的应用程序读取这些记录。另外,current_fan定义在动作电缆类中并不意味着它定义在控制器中。所有这些都应该通过配置test环境来完成,但是你运行的是一个过时的设置,你可能会遇到找到准确细节的问题。如果可以的话更新。
哦,而且你不运行在现场版本的站点上,这将是一个巨大的风险,当你在那里涉及database_cleaner时,清除所有数据。

相关问题