Я работаю над тестированием корзины покупок, оформлением заказа, процессом оплаты на Zend Framework с помощью phpunit.Я тестирую ShoppingCartController
, добавляя продукты в корзину, модель ShoppingCart
обрабатывает добавления продуктов, сохраняя идентификаторы продуктов в пространстве имен Zend Session, а затем в другом тесте я хочу проверить, что продукты были добавлены.Та же самая модель 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');
}