2013-08-06 2 views
2

Я уверен, что это невероятно глупый вопрос, но я новичок в Cucumber, Ruby и Rspec, и я борюсь с чем-то чрезвычайно простым.Использование ожидающего совпадения в Rspec

Я установил Rspec камень, и я хотел бы использовать ожидания matchers: ожидать (фактическая) .то экв (ожидается)

Похоже, что я должен быть в состоянии просто требуют 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 

Благодарим за любую помощь.

ответ

2

Если вы используете Cucumber, вы можете просто включить «rspec/ожидания» в ваш файл env.rb, а затем использовать ожидаемый синтаксис в определениях шагов.

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 

Моя ошибка была mistakingly тестирования этого синтаксиса в консоли рубина. Вы не можете этого сделать, поскольку Cucumber делает для вас некоторые автоматы.

«Когда огурец видит модули Spec :: Matchers and Spec :: Expectations, они будут неявно включать их в мир, в котором выполняются этапы».

2

Мне очень понравилось экспериментировать с масками expect() в консоли Rails. Я понимаю, что могу обернуть их в блок описания/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, но мне любопытно;)

+1

«test = описать» базовое rspec feasure «сделать это» должно делать мои ставки »do expect (: a) .to eq (: а) конец; end '' test.run' будет истинным, если тест пройдет – ivanxuu

Смежные вопросы