我正在使用PHPUnit对我的应用程序进行单元测试(使用Zend Framework 2)。我陷入了需要调用一个测试类中的方法的情况 从另一个测试类。让我用一个小例子来解释自己:
<?php
// TestUser.php
namespace Test\User;
class UserTest extends \PHPUnit_Framework_TestCase
{
public static function GetUserCount(){
// some code here
}
}
?>
<?php
// TestAdmin.php
namespace Test\Admin;
use Test\User;
class AdminTest extends \PHPUnit_Framework_TestCase
{
public static function AdminAction(){
Test\User::GetUserCount();
}
}
?>
当我致电Test\User::GetUserCount();
或User::GetUserCount();
时,我收到以下错误:
PHP致命错误:在路径/ / TestAdmin.php中找不到类'Test \ User' 在第11行
是否可以从一个测试类调用该方法到另一个测试类?如果是,怎么样?
由于
答案 0 :(得分:1)
通常,您会模拟其他类调用,以确保返回的值是您的类所期望的值。您也可以将一些测试与Test Dependencies链接在一起。
我添加了一个简短的样本。注意,我假设您添加了AdminAction和GetUserCount()作为示例,因为这些不是您使用PHPUnit测试时的测试方法。
TestUser.php
<?php
namespace Test\User;
class UserTest extends \PHPUnit_Framework_TestCase
{
protected $UserObject;
public function setUp()
{
$this->UserObject = new Test\User(); // Normal Object
}
public static function testGetUserCount()
{
$this->assertEquals(1, $this->UserObject->GetUserCount(), 'Testing the basic object will return 1 if initialized'); // Do your tests here.
}
}
TestAdmin.php
<?php
namespace Test\Admin;
class AdminTest extends \PHPUnit_Framework_TestCase
{
protected $AdminObject;
public function setUp()
{
$this->AdminObject = new Test\Admin();
}
public static function testAdminAction()
{
// Create a stub for the User class.
$stub = $this->getMock('User');
// Configure the stub.
$stub->expects($this->any())
->method('GetUserCount')
->will($this->returnValue(2));
// Calling $stub->GetUserCount() will now return 2. You can then ensure the Admin class works correctly, by changing what the mocks return.
$this->assertEquals(2, $stub->GetUserCount());
}
}