我正在使用Symfony2并尝试为我的一个类编写一些PHPUnit测试。
这是我在Symfony2测试后到目前为止所做的文档我在Tests目录下创建了一个文件夹myClassTest.php ini it:
<?php
namespace Test\TestBundle\Tests\Template;
use Test\TestBundle\Dto\Template\myTemplate;
class myTemplateTest extends \PHPUnit_Framework_TestCase
{
public function testMyMethod()
{
$test = new myTemplate();
}
}
这是myTemplate:
<?php
namespace Test\TestBundle\Dto\Template;
use Test\TestBundle\Doctrine\DatabaseRepository;
use Test\TestBundle\Validation\ValidationClass;
class myTemplate
{
/**
* @var ValidationClass
*/
private $validate;
/**
* @var DatabaseRepository
*/
private $db;
/**
* @param ValidationClass $validation
* @param DatabaseRepository $databaseRepository
*/
public function __construct(
ValidationClass $validation,
DatabaseRepository $databaseRepository
) {
$this->validate = $validation;
$this->db = $databaseRepository;
}
}
错误:
Argument 1 passed to Test\TestBundle\Dto\Template\myTemplate::__construct()
must be an instance of Test\TestBundle\Validation\ValidationClass, string given,
called in Dev/project/src/Test/TestBundle/Tests/Template/myTemplateTest.php
更多错误:
此错误指向构造$ validation
中的注入服务Dev/project/src/Test/TestBundle/Dto/Template/myTemplate.php:42
此错误对应于myTemplate类的实例化类
Dev/project/src/Test/TestBundle/Tests/Dto/Template/myTemplateTest.php:15
我认为我的错误很好,但我不知道如何修复它,当我运行phpunit
测试时会显示这些错误。
答案 0 :(得分:0)
对于使用PHPUnit进行测试,您应该在依赖类中使用Mocks和Stubs来模仿逻辑。
在测试用例中初始化myTemplate
之前,您应该创建一个这个对象的模拟,或者创建原始对象。
$validationMock = $this->getMock('ValidationClass');
$dbRepositoryMock = $this->getMock('DatabaseRepository');
$myTemplate = new myTemplate($validationMock, $dbRepositoryMock);
之后可以使用调用系统来控制被称为方法。
有关更多信息,请访问PHPUnit网站: https://phpunit.de/manual/current/en/test-doubles.html