2015-10-16 44 views
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.我不確定管絃樂/測試平臺是否真的涉及到這個問題,我認爲它主要是一個嘲弄的東西。

回答

0

我現在無法測試它,但是您是否錯過了關閉()以停止嘲諷的調用?

\Mockery::close();