undefined局部变量或方法`message'(NameError)

时间:2014-04-06 07:18:40

标签: ruby-on-rails-3 rspec cucumber

我正在尝试通过参考"实用程序员 - Rspec Book"来学习Rspec-Cucumber教程。我在第4章并且似乎陷入了错误并且无法前进。我完全按照教程进行了操作但是当我尝试运行黄瓜功能时它显示以下错误(in line : output.messages.should include(message))在我的控制台中。

undefined local variable or method `message' for #<Object:0x9c0c05c> (NameError)

我的codebreaker_steps.rb文件如下。

Then /^I should see "([^"]*)"$/ do |arg1|
output.messages.should include(message)
end

class Output
    def messages
    @messages ||= []
    end

    def puts(message)
    messages << message
    end
end

    def output
    @output ||= Output.new
    end

1 个答案:

答案 0 :(得分:1)

如果您花时间熟悉红宝石的基本知识,那将对您有所帮助。要回答您的问题,您应该像这样更改步骤定义

Then /^I should see "([^"]*)"$/ do |arg1|
  output.messages.should include(arg1)
end

或者像这样

Then /^I should see "([^"]*)"$/ do |message|
  output.messages.should include(message)
end