我正在尝试向单元测试套件中添加自定义帮助方法,但是运行测试时出现Fatal error: Uncaught ArgumentCountError: Too few arguments to function
错误。
这是我到目前为止所拥有的
运行测试时,我得到:
ArgumentCountError: Too few arguments to function ExampleTest::__construct(), 0
_support / Helper / Unit.php:
namespace Helper;
// here you can define custom actions
// all public methods declared in helper class will be available in $I
class Unit extends \Codeception\Module
{
public function get_hello()
{
return 'Hello';
}
}
测试方法:
public function testMe1(\UnitTester $I)
{
$hello = $I->get_hello();
$this->assertEquals(2, $hello);
}
# Codeception Test Suite Configuration
#
# Suite for unit (internal) tests.
class_name: UnitTester
modules:
enabled:
- Asserts
- \Helper\Unit
为什么testme1()不接受任何参数?我错过了哪一步?
答案 0 :(得分:1)
单元测试方法不会将actor作为参数传递。
您可以在$this->tester
上给他们打电话,就像在this example上一样
function testSavingUser()
{
$user = new User();
$user->setName('Miles');
$user->setSurname('Davis');
$user->save();
$this->assertEquals('Miles Davis', $user->getFullName());
$this->tester->seeInDatabase('users', ['name' => 'Miles', 'surname' => 'Davis']);
}
答案 1 :(得分:1)
@Naktibalda 的回答适用于集成测试,而不适用于单元测试。
我发现在单元测试中获取模块方法的唯一方法是使用 getModule() 方法:
public function testSomethink()
{
$this->getModule('Filesystem')->openFile('asd.js');
}
通过这种方式,您也可以加载自定义模块。
如果没有,您可以在单元测试中重用一些代码,为所有单元测试创建一些父类。像 BaseUnitTest 这样的想法,它从 Codeception\Test\Unit 扩展而来。并在此类中编写可重用的代码。