Đây không phải là một câu hỏi như là một nỗ lực để cứu người khác trong giờ tôi chỉ lãng phí trên PHPUnit.Điều gì sẽ xảy ra với các đối tượng được chuyển giữa các bài kiểm tra PHPUnit phụ thuộc?
Vấn đề của tôi là đối tượng giả của tôi, khi được sử dụng trong thử nghiệm phụ thuộc, không trả lại giá trị mong đợi. Có vẻ như PHPUnit không bảo toàn cùng một đối tượng giữa các thử nghiệm phụ thuộc, mặc dù cú pháp làm cho nó trông giống như nó.
Có ai biết tại sao PHPUnit thực hiện việc này không? Đây có phải là một lỗi? Những điều như thế này trong PHPUnit làm cho nó rất bực bội để sử dụng.
<?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());
}
}
Vui lòng thêm dòng lệnh bạn đã gọi phpunit khi bạn gặp sự cố. - và có lý do nào khiến bạn làm '$ mock' thành một thành viên tư nhân không? – hakre
AFAIK phpunit chạy phương thức setUp() trước mỗi lần kiểm tra, để reset giá trị $ this-> mock –
Tôi đã dự kiến rằng nó hoạt động như bạn đã viết nó xuống, tôi nghĩ 'setUp()' sẽ không được gọi @ dependant kiểm tra và vì vậy tôi đã thực sự ngạc nhiên rằng điều đó đã thất bại quá ... Điều đó có thể đã cắn tôi BADLY nếu tôi đã có một mô hình thông qua một lớp tôi vượt qua xung quanh với @depends :) – edorian