我正在使用Laravel运行PHPUnit。这是我的测试:
class UserTest extends TestCase {
public function testSluggifyReturnsSluggifiedString($originalString, $expectedResult)
{
$url = new User();
$result = $url->sluggify($originalString);
$this->assertEquals($expectedResult, $result);
}
public function providerTestSluggifyReturnsSluggifiedString()
{
return array(
array('This string will be sluggified', 'this-string-will-be-sluggified'),
array('THIS STRING WILL BE SLUGGIFIED', 'this-string-will-be-sluggified'),
array('This1 string2 will3 be 44 sluggified10', 'this1-string2-will3-be-44-sluggified10'),
array('This! @string#$ %$will ()be "sluggified', 'this-string-will-be-sluggified'),
array("Tänk efter nu – förr'n vi föser dig bort", 'tank-efter-nu-forrn-vi-foser-dig-bort'),
array('', '')
);
}
}
由于我熟悉单元测试,我只是将sluggify()
函数添加到User类的底部。
我收到此错误:
There was 1 error:
1) UserTest::testSluggifyReturnsSluggifiedString
ErrorException: Missing argument 1 for UserTest::testSluggifyReturnsSluggifiedString()
如果我更改测试以定义两个参数(public function testSluggifyReturnsSluggifiedString($originalString='test', $expectedResult='test')
),测试运行正常。由于某种原因,它不是在读取提供者数据。
我怀疑这是关于Laravel设置的内容,但我在文档中找不到任何指示我正确方向的内容。我做错了什么?
答案 0 :(得分:0)
来自Data Provider上的PHPUnit文档:
要使用的数据提供程序方法是使用@dataProvider批注指定的。
因此,您必须在测试方法的基础上添加注释,例如:
class UserTest extends TestCase {
/**
* @dataProvider providerTestSluggifyReturnsSluggifiedString
*/
public function testSluggifyReturnsSluggifiedString($originalString, $expectedResult)
{
// ...
}
public function providerTestSluggifyReturnsSluggifiedString()
{
// ...
}
}