0
說我有兩個測試用例需要使用Foo
對象。Laravel管絃樂/測試臺問題與嘲笑
在第一次測試的情況下,我需要Foo
被嘲笑,所以我正在做
class TestCaseA extends \Orchestra\Testbench\TestCase {
function testA() {
$foo = \Mockery::mock('Foo')->shouldReceive('baz')->once();
Something::method_That_Uses_A_Dependency_Injected_Foo();
}
}
在第二次測試的情況下,我需要真正的Foo
實現,所以我做
class TestCaseB extends \Orchestra\Testbench\TestCasez
function testB() {
$foo = new Foo();
$foo->baz();
}
}
當TestCaseA
先跑,TestCaseB
失敗,因爲它實際上是使用模擬實例,我得到一個
BadMethodCallException: Method Foo::baz() does not exist on this mock object
相反,當TestCaseB
先運行,我從Mockery得到一個異常,說明類似「無法創建模擬,因爲真正的Foo對象已經被加載。」(抱歉,但我忘了實際例外)。
我認爲我需要的是測試用例自動加載器之間的一種隔離,但我不知道如何實現這一點。任何提示?
P.S.我不確定管絃樂/測試平臺是否真的涉及到這個問題,我認爲它主要是一個嘲弄的東西。