문제

나는 RSPEC / Mocha 조롱으로 BDD 프레임 워크로 오이를 사용하고 있습니다. 이상적으로 우리는 오이 사양의 조롱 / 스텁 행동을하지 않을 것입니다. 그러나 시나리오는 예외적입니다. 여기서 문제에 대한 간단한 생각을주기 위해; 나는 두 개의 특징 제품 기능과 장바구니 기능을 가지고 있습니다.

장바구니 기능은 현재 3 파티 시스템에서 제품을 가져 오는 일부 제품을 조롱하고 있습니다. 그리고 오이 운영 장바구니 기능은 제품 기능 이전에 실행됩니다. 제품 기능은 일부 시나리오에 대한 실제 호출을 사용합니다. 이상적으로 시나리오가 완료되면 Product.Stub (: Find)와 같은 클래스 레벨 스텁이 제거 될 것으로 예상합니다. 그러나 그것은 그렇지 않습니다. 클래스 레벨 스텁은 다음 오이 시나리오에 머무르고 전화를 간섭합니다.

나는 모카와 rspec을 상호 교환하여 스텁을 유도하는 것; 그러나 아무 쓸모 없음; 두 경우 모두 스텁이 남아 있으며 장바구니 기능 이후의 제품 기능을 실행하는 것을 방지합니다. 둘 다 잘 어울리게됩니다.

누구도 오이에서 재설정되지 않는 스텁 문제에 직면 해 있습니까? 원래의 클래스 동작을 복원 할 수있는 방법이 있습니까?

도움이 될 것입니다.

환호

도움이 되었습니까?

해결책

모카 통합을 위해서는 기능 / 지원 폴더 (mocha.rb)

에 파일에 다음을 추가해야합니다.
require "mocha"

World(Mocha::Standalone)

Before do
  mocha_setup
end

After do
  begin
    mocha_verify
  ensure
    mocha_teardown
  end
end
.

이후의 블록은 모든 조롱을 해제해야합니다.

출처 : http://gist.github.com/80554

다른 팁

구문은 mocha 1.1에 대해 약간 다릅니다 :

require 'mocha/api'

World(Mocha::API)

Before do
  mocha_setup
end

After do
  begin
    mocha_verify
  ensure
    mocha_teardown
  end
end
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top