规范的错误消息:未定义的局部变量或方法

时间:2014-11-25 02:08:51

标签: ruby capybara

我试图编写一个规范来测试用户是否具有" 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>

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,事实证明我的控制器中有一个拼写错误,将@wiki称为wiki。修正了,嘿,问题消失了!