我对PHPUnit数据提供程序有一个非常有趣的问题。
$("#qtyok").click(function () {
var id = $("#menuid").val();
var qty = $("#qtybox").val();
if (qty != '') {
$("#loaderz").show();
$.post("fm_valuemenuload.php", {
id: id,
qty: qty
},
function (data, status) {
$("#loaderz").hide();
$("#modalQty").modal('hide');
$("#message").html('Added');
document.getElementById('quantity').innerHTML = qty;
price += data * qty;
$("#newprice").val(price.toFixed(2));
$("#modalSUCCESS").modal('show');
setTimeout(func1, 3000);
});
}
});
我使用protected $controller;
protected function setUp()
{
$this->controller = new ProductController();
}
/**
* @covers ProductsController::createItem
* @dataProvider getTestDataProvider
* @param number $name
*/
public function testCreateItem($name)
{
$prod = $this->controller->createItem($name);
$id = $prod->getId;
$this->assertInternalType('int', $id);
$this->assertInstanceOf('Product', $prod);
}
/**
* @covers ProductsController::getItemInfo
* @depends testCreateItem
* @param number $id
*/
public function testGetItemInfo($id)
{
$info = $this->controller->getItemInfo($id);
$this->assertArrayHasKey('id',$info);
$this->assertEquals($id, $info['id']);
}
从CSV文件中获取测试数据。然后getTestDataProvider
从CSV行创建10个新产品。
如何创建testCreateItem
个新产品数组并将其用作$id
的数据提供者?我无法将其存储在SESSION或文件中,因为提供程序函数在SetUp之前运行。
也许某人已经遇到过类似的问题了?
答案 0 :(得分:0)
我只对静态字段有所了解(也许不是最好的,但如果有人有更好的我会看)。
private static $ids;
/**
* @dataProvider some
*/
public function testT1($id)
{
self::$ids[] = $id;
}
/**
* @depends testT1
*/
public function testT2()
{
var_dump(self::$ids);
}
public function some()
{
return [
[1],
[2],
[3]
];
}
您必须记住,该字段在所有类中都可见,因此如果您想使用其他数据集,则必须使该字段无效。