【发布时间】:2012-03-11 08:55:36
【问题描述】:
我正在使用 phpunit 在 Zend Framework 上测试购物车、结账、支付流程。我正在通过将产品添加到购物车来测试ShoppingCartController,ShoppingCart 模型通过将产品 ID 存储在 Zend 会话命名空间中来处理产品添加,然后在另一个测试中我想测试产品是否已添加。同一个 ShoppingCart 模型从同一个 Zend Session 命名空间变量中检索添加的产品列表。
添加产品测试看起来像这样并且运行良好,并且添加了var_dump($_SESSION)以进行调试并正确显示产品:
public function testCanAddProductsToShoppingCart() {
$testProducts = array(
array(
"product_id" => "1",
"product_quantity" => "5"
),
array(
"product_id" => "1",
"product_quantity" => "3"
),
array(
"product_id" => "2",
"product_quantity" => "1"
)
);
Ecommerce_Model_Shoppingcart::clean();
foreach ($testProducts as $product) {
$this->request->setMethod('POST')
->setPost(array(
'product_id' => $product["product_id"],
'quantity' => $product["product_quantity"]
));
$this->dispatch($this->getRouteUrl("add_to_shopping_cart"));
$this->assertResponseCode('200');
}
$products = Ecommerce_Model_Shoppingcart::getData();
$this->assertTrue($products[2][0]["product"] instanceof Ecommerce_Model_Product);
$this->assertEquals($products[2][0]["quantity"],
"8");
$this->assertTrue($products[2][1]["product"] instanceof Ecommerce_Model_Product);
$this->assertEquals($products[2][1]["quantity"],
"1");
var_dump($_SESSION);
}
第二个测试尝试通过要求模型检索产品,var_dump($_SESSION) 在测试开始时已经为空。 会话变量已重置,我想找到一种方法来保存它们,有人可以帮忙吗?
public function testCanDisplayShoppingCartWidget() {
var_dump($_SESSION);
$this->dispatch($this->getRouteUrl("view_shopping_mini_cart"));
$this->assertResponseCode('200');
}
【问题讨论】: