Чтобы проверить вставку / обновление строки, я написал тест для имитации поста, проверки его перенаправления и проверки того, что вновь вставленный / обновленный текст находится на странице. Код работает, но не тестирует - можете ли вы сказать мне, почему это неправильно?
public function testEditProduct() {
$request = $this->getRequest();
$request->setMethod('POST');
$request->setPost(array(
'id'=>'1',
'title'=>'Test Product 1a'
));
$this->dispatch('/product/edit/id/1');
$this->assertRedirectTo('/');
$this->assertQueryContentContains('a', 'Test Product 1a');
}
public function testAddProduct() {
$request = $this->getRequest();
$request->setMethod('POST');
$request->setPost(array(
'title'=>'Test Product 3'
));
$this->dispatch('/product/add/');
$this->assertRedirectTo('/');
$this->assertQueryContentContains('a', 'Test Product 3');
}
Следующие оба теста работают, утверждая, что страница индекса с параметром ID содержит соответствующий текст, и что после удаления продукта название продукта больше не отображается на странице.
public function testIndexPageListsProducts() {
$this->dispatch('/product/index/id/1');
$this->assertQueryContentContains('h1', 'Test Product 1');
}
public function testDeleteProduct() {
$request = $this->getRequest();
$request->setMethod('POST');
$this->dispatch('/product/delete/id/2');
$this->assertRedirectTo('/');
$this->assertNotQueryContentContains('a', 'Test Product 2');
}