я вижу чтоб протестировать этот функционал мне нужно 3 уровня
1й протестировать сами обьекты
$product = new Product(123);
$basket->add($product)
assert ( instanceof $basket->get(123) == \namespace\Product );
$basket->remove( 123 );
assert( false === $basket->getAll() )
2й протестировать формы и route возвращающий содержание корзины
$crawler = $client->request(‘POST’, “/basket/add” );
$form = $crawler->filter('#formID')->form();
$form->setValues(array(
"form[productId]” => 123,
"form[quontity]” => 4
));
$response = $client->getResponse();
// assert status code
$crawler = $client->request('GET', “/basket/getAll” );
$response = $client->getResponse();
// foreach basketItems и найти положеный ProductId
$crawler = $client->request('GET', “/basket/delete/123” );
$response = $client->getResponse();
// check status code и повторить /basket/getAll проверить что продукт удалился
3й протестировать javascript во всех браузерах
через селениум открыть страницу продукта и кликнуть на кнопку "добавить в корзину", дождаться ajax ответа. вызвать ajaxом route /basket/getAll проверить что в JSON лежит продукт, нажать на кнопку "удалить из корзины" ну и проверить еще раз
я вообще на правильном пути?
только начинаю с тестированием
заранее спасибо