2014-01-20 4 views
2

Я использую 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 Fatal error: Class 'Test\User' not found in path/to/TestAdmin.php on line 11

Любая идея, если метод вызывается из одного тестового класса к другому испытанию класс? Если да, то как?

Благодаря

+0

Имя класса: UserTest не пользователь – Pakspul

ответ

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

} 
Смежные вопросы