我很确定这是一个令人难以置信的愚蠢问题,但我是Cucumber,Ruby和Rspec的新手,我正在努力学习一些非常基础的东西。
我安装了rspec gem,我想使用期望匹配器: 期待(实际).to eq(预期)
似乎我应该能够简单地要求rspec /期望然后执行这些命令,但它不起作用。
我错过了什么?
1.9.3-p448 :001 > require 'rspec'
=> true
1.9.3-p448 :002 > require 'rspec/expectations'
=> true
1.9.3-p448 :003 > expected = "this"
=> "this"
1.9.3-p448 :004 > actual = "this"
=> "this"
1.9.3-p448 :005 > expect(actual).to eq(expected)
NoMethodError: undefined method `expect' for main:Object
from (irb):5
from /Users/lpc/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
奇怪的是“应该”正常工作。
1.9.3-p448 :006 > expected.should == actual
=> true
感谢您的帮助。
答案 0 :(得分:2)
如果使用Cucumber,您只需在env.rb文件中包含'rspec / expectations',然后在步骤定义中使用预期的语法。
env.rb:
require 'rspec/expectations'
steps.rb:
Then(/^I should be able to use rspec$/) do
expected = "this"
actual= "this"
expect(actual).to eql(expected)
end
我的错误是在ruby控制台中错误地测试了这种语法。你不能这样做,因为Cucumber为你做了一些自动化的东西。
“当黄瓜看到Spec :: Matchers和Spec :: Expectations模块定义时,它将隐含地将它们包含在执行步骤的World中。”
答案 1 :(得分:2)
我真的很想能够在Rails控制台中尝试expect()匹配器。我意识到我可以将它们包装在describe / it块中,但是我在控制台中没有得到有用的结果。
describe "basic rspec feasure" do it "should do my bidding" do expect(:a).to eq(:a) end; end
返回RSpec::Core::ExampleGroup::Nested_2
有没有人能够深入了解一个人如何做这样的事情?我很好奇发送通过/失败条件的路径在rspec内部是什么。我意识到这是rspec的非典型和高级用法,但我很好奇;)