오이 시나리오에서 rspec / mocha와 스텁
-
13-09-2020 - |
문제
나는 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
.
이후의 블록은 모든 조롱을 해제해야합니다.
다른 팁
구문은 mocha 1.1에 대해 약간 다릅니다 :
require 'mocha/api'
World(Mocha::API)
Before do
mocha_setup
end
After do
begin
mocha_verify
ensure
mocha_teardown
end
end
. 제휴하지 않습니다 StackOverflow