我正在创建一些测试来测试控制器和模型。当我使用 FactoryGirl 创建虚假数据时,我收到了用户(记录所属的)不存在的错误。
这是我的模型 composition.rb
class Composition < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :name, presence: true, uniqueness: {scope: :user_id}
end
Run Code Online (Sandbox Code Playgroud)
这是我的 FactoryGirl 文件 composition.rb
require 'faker'
FactoryGirl.define do
factory :composition do
name { Faker::Name.name }
description { Faker::Lorem.words }
import_composition { Faker::Boolean.boolean }
import_composition_file { Faker::File.file_name('path/to') }
end
end
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的 RSpec 测试
require 'rails_helper'
describe CompositionsController do
before(:each) do
@user = FactoryGirl.create(:user)
@group = FactoryGirl.create(:group)
sign_in @user
@composition = Composition.new(FactoryGirl.create(:composition), user_id: @user.id, group_id: @group.id)
end
describe "GET #index" do …Run Code Online (Sandbox Code Playgroud) 使用RSpec和Capybara我试图在网页上测试删除功能.
视图中按钮的代码是:
<%= link_to "×".html_safe, material, method: :delete, data: { confirm: 'Are you sure?' }
Run Code Online (Sandbox Code Playgroud)
我想为它编写RSpec测试,以便能够单击确认框中的"确定"按钮.到目前为止我得到了以下内容
feature 'Delete materials' do
before do
@user = FactoryGirl.create(:user)
@group = FactoryGirl.create(:group)
@user.groups << @group
@material_1 = FactoryGirl.create(:material, user: @user, group: @group)
login_as(@user, scope: :user)
end
scenario "in the index should give a confirmation box", js: true do
visit materials_path
expect(Material.count).to eq(1)
accept_confirm do
find('a[data-method="delete"]').click
click_link "OK"
end
expect(Material.count).to eq(0)
end
end
Run Code Online (Sandbox Code Playgroud)
我一直得到的错误是:
Selenium::WebDriver::Error::UnhandledAlertError:
unexpected alert open: {Alert text : Are you sure?}
(Session …Run Code Online (Sandbox Code Playgroud)