我曾嘲笑在PHP中使用嘲弄(即時通訊使用的laravel框架接口時遇到一個問題,但我不知道這是相關的。錯誤使用嘲諷嘲諷
我已經定義的接口
<?php namespace MyNamespace\SomeSubFolder;
interface MyInterface {
public function method1();
}
而且我有typehints上的方法,一個接口的類...
<?php namespace MyNamespace\SomeSubFolder;
use MyNamespace\SomeSubFolder\MyInterface;
class MyClass {
public function execute(MyInterface $interface)
{
//does some stuff here
}
}
...,我想測試MyClass的。我已經創建了一個測試,廁所KS是這樣的:
public function testExecute()
{
$mock = Mockery::mock('MyNamespace\SomeSubFolder\MyInterface');
$mock->shouldReceive('method1')
->andReturn('foo');
$myClass = new MyClass();
$myClass->execute($mock);
}
當我運行測試我收到消息
「ErrorException:傳遞給MyClass的參數1 ::執行必須myNameSpace對象\ SomeSubFolder \ MyInterface的實例,Mockery_123465456實例給定....'
我不知道爲什麼。
在測試我已經試過如下:
$this->assertTrue(interface_exists('MyNamespace\SomeSubFolder\MyInterface'));
$this->assertTrue($mock instanceof MyInterface);
和都返回true,所以它看起來好像我已經創建和實例實現該接口,但是當我呼籲級IT的方法不同意。有任何想法嗎???
我認爲你需要提供更多的代碼或實際代碼,這https://gist.github.com/davedevelopment/31b143fc44ec52fcc575按預期工作對我來說 –
用嘲弄的時候,我得到這一點。我發現啓用進程隔離的運行測試可行(但這顯然比較慢)。 – Ross
我記得有一個類似的問題,實際上是一個嘲笑中的錯誤。你能否更新Mockery到dev-master並查看問題是否仍然存在? – 2013-12-31 22:40:50