2010-08-09 4 views
2

у меня есть эта спецификация:RSpec тест выходного анализатора Treetop не соответствует, когда он должен

it 'can parse armies with only section headers' do 
    list = <<-LIST 
    :Core 
    :Special 
    :Omgg 
    :Moarheaders 
    LIST 
    expected_output = "## Core\n## Special\n## Omgg\n## Moarheaders\n" 
    parsed = @parser.parse(list) 
    parsed.should_not be_nil 
    parsed.transform.should be expected_output 
end 

Который производит этот выход:

expected ## Core 
## Special 
## Omgg 
## Moarheaders 
, got "## Core\n## Special\n## Omgg\n## Moarheaders\n" 

Если удалить двойные кавычки, я получаю это выход:

expected ## Core\n## Special\n## Omgg\n## Moarheaders\n, 
got  "## Core\n## Special\n## Omgg\n## Moarheaders\n" 

Если добавить кавычки в мой expected_output, я получаю это: (expected_output = '"## Core\n## Special\n## Omgg\n## Moarheaders\n"')

expected "## Core\n## Special\n## Omgg\n## Moarheaders\n", 
got  "## Core\n## Special\n## Omgg\n## Moarheaders\n" 

Что здесь происходит?

Я не могу получить результат Treetop, чтобы оценить \ n как символы новой строки, и я не могу получить соответствие expect_output независимо от того, что я пытаюсь.

Я смущен.

ответ

1

ли вы попробовать:

parsed.transform.should == expected_output

be может использовать идентификатор объекта, вместо сравнения значений строк.

+0

Ahh, не могу поверить, что я этого не замечал. Спасибо. Это был трюк. :) –

+0

Ну, я не знал, что «будет» так, так что я тоже чему-то научился. PS. Не могли бы вы принять ответ? – zetetic