从另一个Test类调用Test Class的方法

时间:2014-01-20 10:11:26

标签: php phpunit

我正在使用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行

是否可以从一个测试类调用该方法到另一个测试类?如果是,怎么样?

由于

1 个答案:

答案 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());
    }

}