我是个爱好开发者,没受过教育。我有两个问题与一个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路由停止工作。我必须有轨道运行吗?
问题三
我如何连接运行的现场版本的网站,以在实际网站上执行这些测试?
事先非常感谢
1条答案
按热度按时间0yg35tkg1#
FactoryBot(nee Girl)在特性规范期间不会直接与您的应用交互。它用于在数据库中创建记录,然后由在单独的线程或进程中运行的应用程序读取这些记录。另外,
current_fan
定义在动作电缆类中并不意味着它定义在控制器中。所有这些都应该通过配置test
环境来完成,但是你运行的是一个过时的设置,你可能会遇到找到准确细节的问题。如果可以的话更新。哦,而且你不运行在现场版本的站点上,这将是一个巨大的风险,当你在那里涉及database_cleaner时,清除所有数据。