gpt4 book ai didi

php - disableOriginalConstructor() 和 will() 冲突

转载 作者:行者123 更新时间:2023-12-02 22:09:44 25 4
gpt4 key购买 nike

我有一个使用数据库适配器的模型,我想对其进行测试。数据库适配器的构造函数处理所有数据库连接,因此我想在测试期间避免它,否则它会返回有关未设置数据库密码/数据库用户名等的错误。

我当前正在运行的代码如下所示,如您所见,我正在使用 disableOriginalConstructor() 来防止调用构造函数。

问题是当我尝试在 will() 中使用 $mysql_stub 时出现此错误:

Argument 1 passed to PHPUnit_Framework_MockObject_Builder_InvocationMocker::will() must implement interface PHPUnit_Framework_MockObject_Stub, instance of Mock_Pages_MySQL_Page_46612429 given, called in /Applications/MAMP/htdocs/lib/Pages/trunk/Tests/Unit/PageTest.php on line 185 and defined

有人可以建议,正确的语法是什么?

class Page {

public function getByUrl($url)
{
$db_page = $this->getDAOInterface();
$db_page->getByUrl($url);
$this->assign($db_page);
return $this;
}

}

class PageTest extends PHPUnit_Framework_TestCase
{
public function testGetByUrl()
{
$test_url = "foo-bar";
$page_stub = $this->getMock(
'Pages_Model_Page',
array('getDAOInterface', 'assign')
);

$mysql_stub = $this->getMockBuilder('Pages_MySQL_Page')
->setMethods(array('getByUrl'))
->disableOriginalConstructor()
->getMock();

$mysql_stub->expects($this->once())
->method('getByUrl')
->with($this->equalTo($test_url));

$page_stub->expects($this->once())
->method('getDAOInterface')
->with()
->will($mysql_stub);

$page_stub->expects($this->once())
->method('assign')
->with($mysql_stub);

$page_stub->geByUrl($test_url);
}
}

最佳答案

好吧,终于弄明白是哪里出了问题。错误是我的疏忽造成的。应按照以下方式调用遗嘱:

$page_stub->expects($this->once())
->method('getDAOInterface')
->with()
->will($this->returnValue($mysql_stub));

关于php - disableOriginalConstructor() 和 will() 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com