У меня возникают проблемы с сопоставлением равенства в декорированных объектах RSpec и Draper.
Спецификации, чтобы показать, что происходит:
context 'how to use the right equality matcher' do
let(:page) { build(:page) }
let(:decorated_page) { page.decorate }
it "should pass, but doesn't" do
expect(decorated_page).to_not eq page
end
it 'proves the classes are different' do
expect(decorated_page).to be_a PageDecorator
expect(page).to be_a Page
expect(decorated_page.class).to_not eq page.class
end
it 'has a work around' do
expect(decorated_page).to be_decorated_with PageDecorator
expect(page).to_not be_decorated_with PageDecorator
end
end
Я знаю, что в RSpec есть несколько различных средств проверки на равенство, и что eq
является «самый слабый», но я бы подумал, что отсутствие одного и того же класса будет нарушителем условий сделки.
Как видите, у меня есть обходной путь для этого случая благодаря сопоставителям Draper. Но я чувствую, что должен что-то упустить, чтобы этот тест провалился.
Вопрос:
Какой сопоставитель равенства я должен использовать, чтобы пройти тест should pass, but doesn't
?
eq
просто использует оператор==
для объектов, так что на самом деле это не проблема RSpec, а проблема Draper. - person David Grayson   schedule 30.12.2014