我试图编写一个规范来测试用户是否具有" premium"可以使用属性" personal来编辑wiki。"
以下是我的一个场景(这是一个功能规范)
scenario "it allows premium users to assign collaborators" do
user = create(:user, role: 'premium')
wiki = create(:wiki, personal: true)
r = create(:relationship, wiki_id: wiki.id, user_id: user.id, creator_created: true)
login_as(user, :scope => :user)
visit (edit_wiki_path(wiki))
expect(page).to have_content('Private')
expect(page).to have_content("Select collaborators")
end
我得到的错误信息是,
Failure/Error: click_on('Edit')
ActionView::Template::Error:
undefined local variable or method `wiki' for #<#<Class:0xb22e920>:0xcb58c0c>
当我尝试完成用户将要经历的所有步骤时,我会收到相同的错误消息,因此它不仅仅是访问方法的问题。 。 。这是一个例子:
scenario "it allows premium users to edit Private Wikis" do
wiki = create(:wiki, personal: true)
user = create(:user, role: 'premium')
r = create(:relationship, wiki_id: wiki.id, user_id: user.id, creator_created: true)
login_as(user, :scope => :user)
visit root_path
click_on('View Private Wikis')
click_on('MyString') # the title of the wiki created above
click_on('Edit')
click_button('Save and Parse')
expect(page).to have_content('MyString')
end
此处显示错误消息
Failure/Error: click_on('Edit')
ActionView::Template::Error:
undefined local variable or method `wiki' for #<#<Class:0xb22e920>:0xcb58c0c>
有什么想法吗?
谢谢!
答案 0 :(得分:0)
嗯,事实证明我的控制器中有一个拼写错误,将@wiki称为wiki。修正了,嘿,问题消失了!