Как снять мокко с макета? - PullRequest
       30

Как снять мокко с макета?

5 голосов
/ 12 сентября 2011

У меня есть следующий mocha mock, который отлично работает.

В файле test.rb:

setup do
  Date.stubs(:today).returns(Date.new(2011, 7, 19)) 
  Time.stubs(:now).returns(Time.new(2011,1,1,9,0))
end

Проблема в том, что для тестов нарушено время.После выполнения тестов объекты даты и времени все еще высмеиваются. (!)

Finished in -21949774.01594216 seconds.

Я добавил следующее:

teardown do
  Date.unstubs(:today)
  Time.unstubs(:now)
end

Это приводит к следующей ошибкедля каждого теста: WARNING: there is already a transaction in progress

Это правильный способ расстегнуть?Что лучше: отменить вставку в конце тестового файла или даже в конце пакета модульных тестов?

Работа в Rails 3.07 и Mocha 0.9.12

Спасибо.

Ответы [ 2 ]

10 голосов
/ 12 сентября 2011

Я не знаю, полностью ли это ваша проблема, но это просто unstub, а не множественное число.

Кроме этого, не должно быть никаких проблем.Вам определенно нужно снимать заглушку после каждого теста (или набора тестов, если группе тестов требуется заглушка), потому что однажды заглушенная она останется заглушкой, и это может испортить другие тесты.

6 голосов
/ 17 июня 2014

Принятый ответ распространяет дезинформацию и должен считаться вредным.

Одна из основных целей библиотеки-макета, такой как Mocha, - обеспечить автоматическое удаление макетов / заглушек в рамках интеграции с различными библиотеками тестирования.Фактически, если вы посмотрите на репозиторий GitHub для Mocha , вы увидите, что значительные усилия по техническому обслуживанию направлены на то, чтобы Mocha работала плавно со всеми версиями нескольких различных сред тестирования.

Если это не такне работает должным образом, вам нужно выяснить, почему встроенный демонтаж Mocha не работает.Отключение вручную в вашем собственном демонтаже - это просто устранение проблемы и может скрыть более тонкие проблемы с утечкой заглушки или неправильным поведением мокко.

Если бы мне пришлось принять дикое предположение, деньги были бы на вашей заглушке, так или иначе запущенной снаружифактического теста, потому что это самая распространенная причина, которую я видел для такого рода вещей в дикой природе, но информации из этого вопроса недостаточно, чтобы действительно установить.

...