我正在做轨道教程,现在是第11章。
为什么会出现这个错误?
警告:在
another_user
中访问声明before(:all)
挂钩:
/Users/xxx/Documents/rails_projects/sample_app_2/spec/requests/micropost_pages_spec.rb:49:in '阻止(4级)'这是RSpec 3不支持的弃用行为。
let
和subject
声明无意在a中调用before(:all)
挂钩,因为它们存在以定义重置的状态 在每个示例之间,before(:all)
存在以定义状态 在示例组中的示例之间共享。警告:让 声明another_user
在before(:all)
钩子中访问:
/Users/xxx/Documents/rails_projects/sample_app_2/spec/requests/micropost_pages_spec.rb:49:in '阻止(4级)'
我的档案在这里。 enter link description here
答案 0 :(得分:1)
您收到错误是因为您有以下代码:
let(:another_user) { FactoryGirl.create(:user) }
before(:all) do
10.times { FactoryGirl.create(:micropost, user: another_user, content: "Foooo") }
end
其中before(:all)
代码使用由another_user
定义的let
变量。
您可以通过将before(:all)
调用更改为
before(:all) do
user = FactoryGirl.create(:user)
10.times { FactoryGirl.create(:micropost, user: user, content: "Foooo") }
end
请注意,当前在railstutorial.org上定义的教程不包含任何违反限制的代码。
答案 1 :(得分:0)
在我的环境中,以下代码可以使用。
describe "delete links" do
before(:all) do
@another_user = FactoryGirl.create(:user)
10.times { FactoryGirl.create(:micropost, user: @another_user, content: "Foooo") }
end
after(:all) do
Micropost.delete_all
User.delete_all
end
before { visit user_path(@another_user) }
it "should not create delete link for not current user" do
Micropost.paginate(page: 1).each do |mp|
should_not have_link("delete", href: micropost_path(mp))
end
end
it { should have_content(@another_user.name) }
it { should have_content("Foooo") }
end