【发布时间】:2013-09-29 03:43:23
【问题描述】:
我有一个我想模拟的界面。我知道我可以模拟该接口的实现,但是有没有办法只模拟该接口?
<?php
require __DIR__ . '/../vendor/autoload.php';
use My\Http\IClient as IHttpClient; // The interface
use My\SomethingElse\Client as SomethingElseClient;
class SomethingElseClientTest extends PHPUnit_Framework_TestCase {
public function testPost() {
$url = 'some_url';
$http_client = $this->getMockBuilder('Cpm\Http\IClient');
$something_else = new SomethingElseClient($http_client, $url);
}
}
我在这里得到的是:
1) SomethingElseTest::testPost
Argument 1 passed to Cpm\SomethingElse\Client::__construct() must be an instance of
My\Http\IClient, instance of PHPUnit_Framework_MockObject_MockBuilder given, called in
$PATH_TO_PHP_TEST_FILE on line $NUMBER and defined
有趣的是,PHPUnit, mocked interfaces, and instanceof 会建议这可能有效。
【问题讨论】:
-
您误读了另一个问题,它使用的是
->getMock()而不是->getMockBuilder(),就像您一样,您也找到了问题的答案。但是 IIRC 确实存在您的问题的副本,但我现在找不到。 -
有趣。我在搜索中找不到它。感谢您的编辑。
-
您也可以在下面接受您的回答,以便您的问题被标记为已回答。
-
好电话。似乎这里没有更多的输入。谢谢。
标签: php interface mocking phpunit