我希望将测试框架合并到我正在构建的项目中,并且遇到了我喜欢的增强PHP但我在线查找相关信息有些困难,因为"增强php"是一个常用的短语.
有没有人使用这个框架,可能会指向我一些有用的指南?您是否使用过您认为更好的单元测试框架?
提前致谢.
在回应Gotzofter时,这是要测试的类:
<?php
include_once('EnhanceTestFramework.php');
class ExampleClass
{
private $OtherClass;
function __construct($mock = null)
{
if ($mock == null)
$this->OtherClass = new OtherExampleClass();
else
$this->OtherClass = $mock;
}
public function doSomething()
{
return $this->OtherClass->getSomething(1, 'Arg2');
}
}
class OtherExampleClass
{
public function getSomething()
{
return "Something";
}
}
class ExampleClassTests extends \Enhance\TestFixture
{
public function setUp()
{
}
public function tearDown()
{
}
public function verifyWithAMock()
{
$mock = \Enhance\MockFactory::createMock('OtherExampleClass');
$mock->addExpectation(
\Enhance\Expect::method('getSomething')
->with(1, 'Arg2')
->returns('Something')
->times(1)
);
$target = new ExampleClass($mock);
$result = $target->doSomething();
\Enhance\Assert::areIdentical("Something", $result);
$mock->verifyExpectations();
}
}
\Enhance\Core::runTests();
Run Code Online (Sandbox Code Playgroud)
看一下ExampleClass的构造函数.
因为enhance-php的网站示例通过调用new ExampleClass($ mock)来注入$ mock对象,所以我不得不更改我的ExampleClass构造函数来处理$ mock作为输入参数.
对于我想要使用框架进行单元测试的所有类,我是否必须处理此问题?
谢谢.
这:
function __construct()
{
$this->OtherClass = new OtherExampleClass;
}
Run Code Online (Sandbox Code Playgroud)
应该:
function __construct($otherClass)
{
$this->OtherClass = $otherClass;
}
Run Code Online (Sandbox Code Playgroud)
此时在测试中永远不会注入您的模拟:
$target = new ExampleClass($mock);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |