我正在使用phpunit測試Zend框架上的購物車,結帳,付款過程。我通過將產品添加到購物車來測試ShoppingCartController
,ShoppingCart
模型通過將產品ID存儲在Zend會話命名空間中來處理產品添加,然後在另一個測試中我想測試是否添加了產品。同一個ShoppingCart
模型從相同的Zend會話命名空間變量中檢索添加產品的列表。如何通過phpunit上的所有測試來保存會話?
的附加產品的測試看起來是這樣的,並且效果很好,和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');
}
好吧,我試試吧 – Daniel 2012-02-21 13:21:48
非常感謝,它按預期工作! – Daniel 2012-02-21 13:48:42
你會建議什麼來分享會話測試用例? – Daniel 2012-02-21 14:10:32