Tôi có một giao diện tôi muốn giả lập. Tôi biết tôi có thể thử một thực hiện của giao diện đó, nhưng có cách nào để chỉ cần giả lập giao diện?Tôi có thể thử thực hiện giao diện với PHPUnit không?
<?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);
}
}
Những gì tôi nhận được ở đây là:
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
Điều thú vị là, PHPUnit, mocked interfaces, and instanceof sẽ đề nghị này có thể làm việc.
Bạn đã hiểu sai câu hỏi khác, nó được sử dụng '-> getMock()' không '-> getMockBuilder()' như bạn làm - và đó là khi bạn tìm ra câu trả lời cho vấn đề của bạn. Tuy nhiên IIRC một bản sao của câu hỏi của bạn ở đây cũng tồn tại nhưng tôi không thể tìm thấy nó ngay bây giờ. – hakre
Thú vị. Tôi không thể tìm thấy nó trong tìm kiếm của mình. Cảm ơn bạn đã chỉnh sửa. –
bạn cũng có thể chấp nhận câu trả lời của bạn dưới đây để câu hỏi của bạn được đánh dấu là đã trả lời. – hakre