Unit testing Symfony2:PHPUnit测试->@dataProvider不发送多路播放
我为我的应用程序进行单元测试 我有一个save saveArticleIds()方法,我为它编写了一个测试->testsavearticleids()。我有一个带有多个数组的数据提供程序articelIdsArray()。函数需要像这样精确的数组Unit testing Symfony2:PHPUnit测试->@dataProvider不发送多路播放,unit-testing,symfony,phpunit,dataprovider,Unit Testing,Symfony,Phpunit,Dataprovider,我为我的应用程序进行单元测试 我有一个save saveArticleIds()方法,我为它编写了一个测试->testsavearticleids()。我有一个带有多个数组的数据提供程序articelIdsArray()。函数需要像这样精确的数组 /** * * @dataProvider articleIdsArray * */ public function testSavearticleIds($articleIds) { $articleIdObjekt = new A
/**
*
* @dataProvider articleIdsArray
*
*/
public function testSavearticleIds($articleIds) {
$articleIdObjekt = new ArticleIdHandler();
$result = $articleIdObjekt->saveArticleIds($articleIds,false);
$this->assertTrue($result);
}
public function articleIdsArray() {
return array(
array(
10552 => 10552,
14314 => 14314,
21034 => 21034,
22739 => 22739,
34568 => 34568,
34572 => 34572,
35401 => 35401,
38292 => 38292,
55141 => 55141,
161764 => 161764,
181589 => 181589
)
);
}
当我运行测试时,出现以下错误:
There was 1 error: 1) My\Bundle\ArticleBundle\Tests\Article\ArticleIdHandlerTest::testSaveArticleIds
with data set #0 (10552, 14314, 21034, 22739, 34568, 34572, 35401, 38292, 55141, 161764, 181589)
Invalid argument supplied for foreach()
为什么它会显示数组,就像我在数组中没有键一样?我需要与我的数据提供程序完全相同的阵列!有什么想法吗??非常感谢你的帮助 在示例中不需要使用@dataProvider 像这样定义您的方法
public function getArticleIdsArray() {
return array(
10552 => 10552,
14314 => 14314,
21034 => 21034,
22739 => 22739,
34568 => 34568,
34572 => 34572,
35401 => 35401,
38292 => 38292,
55141 => 55141,
161764 => 161764,
181589 => 181589
);
}
并在测试中使用它
public function testSavearticleIds($articleIds) {
$articleIdObjekt = new ArticleIdHandler();
$result = $articleIdObjekt->saveArticleIds($this->getArticleIdsArray(),false);
$this->assertTrue($result);
}
也许可以试试这个:
public function articleIdsArray()
{
return
array(
array(
array(
10552 => 10552,
14314 => 14314,
21034 => 21034,
22739 => 22739,
34568 => 34568,
34572 => 34572,
35401 => 35401,
38292 => 38292,
55141 => 55141,
161764 => 161764,
181589 => 181589
)
)
);
}
原因是数组嵌套的第一级是为每一轮测试提供的数据集,第二级表示提供给TestSaveArticleId的参数,顺序与函数的参数列表相同(在您的示例中只有一个参数),最后一级只是测试数组本身
希望这有帮助…试试这个:
/**
* @dataProvider articleIdsArray
*/
public function testSavearticleIds($articleIds)
{
$articleIdObjekt = new ArticleIdHandler();
$result = $articleIdObjekt->saveArticleIds($articleIds,false);
$this->assertTrue($result);
}
public function articleIdsArray()
{
return array(
'scenario_one' => 10552,
'scenario_two' => 14314,
...,
);
}
不工作,得到相同的错误,但每个Id 11次!太糟糕了。错误显示:数据集#10552无效。请不要编写此@dataProvider articleIdsArrayNo,不太可能。。。!现在我在我的工作类中得到了一个错误,它在我的ArticleIdHandler类中被调用。这可能是“合法”测试失败吗?当我尝试我使用的代码时:`public function testSavearticleIds($articleIds){print_r($articleIds);$this->assertTrue(true);}并得到预期的数组作为输出。。。很抱歉设置了格式,无法很好地显示它…请提供
saveArticleIds($articleIds,false)
的源代码。