這不像是一個試圖在PHPUnit浪費時間的時候拯救別人的問題。在依賴PHPUnit測試之間傳遞的對象會發生什麼?
我的問題是,我的模擬對象,當用於依賴測試時,沒有返回期望值。似乎PHPUnit不保留相關測試之間的同一對象,即使語法看起來像它一樣。
有誰知道爲什麼PHPUnit會這樣做?這是一個錯誤?在PHPUnit中這樣的事情使其非常令人沮喪地使用非常。
<?php
class PhpUnitTest
extends PHPUnit_Framework_TestCase
{
private $mock;
public function setUp()
{
$this->mock = $this->getMock('stdClass', array('getFoo'));
$this->mock->expects($this->any())
->method('getFoo')
->will($this->returnValue('foo'));
}
public function testMockReturnValueTwice()
{
$this->assertEquals('foo', $this->mock->getFoo());
$this->assertEquals('foo', $this->mock->getFoo());
return $this->mock;
}
/**
* @depends testMockReturnValueTwice
*/
public function testMockReturnValueInDependentTest($mock)
{
/* I would expect this next line to work, but it doesn't! */
//$this->assertEquals('foo', $mock->getFoo());
/* Instead, the $mock parameter is not the same object as
* generated by the previous test! */
$this->assertNull($mock->getFoo());
}
}
如遇到問題,請添加命令行如何調用phpunit。 - 你有沒有一個理由讓'$ mock'成爲私人成員? – hakre
AFAIK phpunit在每次測試之前運行setUp()方法,以便重置$ this-> mock的值 –
我以爲這會在您寫下它時起作用,我認爲'setUp()'不會被調用@dependant測試,所以我真的很驚訝,那也失敗了......這可能會讓我很厭煩,如果我有一個模擬傳遞給一個類,我傳遞@depends :) – edorian