Подтвердить что ты не робот

В чем преимущества Mocha над RSpec, построенные в насмешливой структуре?

Я замечаю, что многие люди предпочитают Mocha над RSpec, встроенным в насмешливую структуру. Может ли кто-нибудь объяснить преимущества Mocha или любой другой альтернативы для RSpec, построенного в насмешливой структуре?

4b9b3361

Ответ 1

Одна особенность, которая мне очень нравится, - это возможность вырезать все экземпляры класса. Много раз я делал что-то вроде следующего с RSpec mocks:

stub_car = mock(Car)
stub_car.stub!(:speed).and_return(100)
Car.stub!(:new).and_return(stub_car)

с моккой, которая становится:

Car.any_instance.stubs(:speed).returns(100)

Я нахожу версию Mocha более ясной и более явной.

Ответ 2

Ruby mocking frameworks сильно изменились с тех пор, как этот вопрос был задан в 2009 году. Итак, вот сравнение в 2013 году:

ожидания

  • с Rspec-mocks: expect(user).to receive(:say_hello)
  • с Mocha: user.expects(:say_hello).once

Остановка объекта

  • с Rspec-mocks: user = double(name: 'John Doe')
  • с Mocha: user = stub(name: 'John Doe')

Остановка всех

  • с Rspec-mocks: User.any_instance.stub(:name).and_return('John Doe')
  • с моккой: User.any_instance.stubs(:name).returns('John Doe')

Они предлагают те же самые возможности, и оба могут использоваться с Rspec или без них.
Поэтому я бы сказал, что выбор одного над другим - это вопрос личного вкуса (и они очень похожи друг на друга).

Ответ 3

Насколько я знаю, Mocha поддерживает Double Injections (aka Partial Mocking, который также поддерживается в rr), не уверен, что RSpec также поддерживает эту функцию.

Кроме того, для тех, кто предпочитает переключаться между платформами тестирования, Mocha является универсальным решением, применимым для Test/Unit, Shoulda и т.д. Использование RSpec, издевающегося над всеми этими библиотеками, будет излишним.

Ответ 4

I для одного использования мокко, потому что я не использую rspec. Я использую тест/блок, а тестовый/блок не имеет заглушки и издевательств.