Заглушка с Rspec / Mocha в сценариях с огурцом - PullRequest
7 голосов
/ 10 июля 2010

Я использую Cucumber как BDD-фреймворк с rspec / mocha mocking.В идеале мы не будем насмехаться над поведением огурцов;однако сценарий здесь исключительный.Чтобы дать вам краткое представление о проблеме здесь;У меня есть две функции: функция продукта и функция корзины.

Функция корзины в настоящее время высмеивает некоторые продукты, приобретенные из системы трех сторон.А в огуречном прогоне функция корзины запускается до функции продукта.Функция продукта использует реальный вызов для некоторых сценариев.В идеале мы ожидаем, что заглушки уровня класса, такие как Product.stub (: find), будут очищены после завершения сценариев;Однако это не так.Заглушки уровня класса остаются на следующем сценарии огурца и мешают вызову.

Я взаимозаменяемо использовал mocha и rspec, чтобы вызвать заглушки;но безрезультатно;в любом случае заглушка остается и препятствует запуску функции моего продукта после функции корзины.Оба они прекрасно работают в изоляции.

Кто-нибудь сталкивался с подобной проблемой с заглушками, не сбрасываемыми в огурец?Есть ли способ, которым я могу восстановить исходное поведение класса?

Любая помощь будет оценена.

Приветствия

Ответы [ 2 ]

8 голосов
/ 10 июля 2010

Для интеграции mocha вы должны добавить следующее в файл в вашей папке функций / поддержки (например, mocha.rb)

require "mocha"

World(Mocha::Standalone)

Before do
  mocha_setup
end

After do
  begin
    mocha_verify
  ensure
    mocha_teardown
  end
end

Блок after должен освободить все mocks.Источник: http://gist.github.com/80554

4 голосов
/ 07 июня 2014

Синтаксис немного отличается для mocha 1.1:

require 'mocha/api'

World(Mocha::API)

Before do
  mocha_setup
end

After do
  begin
    mocha_verify
  ensure
    mocha_teardown
  end
end
...