2015-08-23 3 views
3

Я делаю WebServices тестов с Codeception, вот мой код:Как заставить тест терпит неудачу в Codeception

//Making first query for getting needed parameter 
$I->wantTo('Make something'); 
$I->sendPOST($this->route, [ 
    'token' => Fixtures::get('token'), 
    'id' => Fixtures::get('some_id') 
]); 
$I->seeResponseCodeIs(200); 
$I->seeResponseIsJson(); 
$I->seeResponseContains('"error_message"'); 

//Then I get what I need with regexp 
if (preg_match('/^.*\s(?<value_i_need>\d+)\.$/', $I->grabDataFromResponseByJsonPath('$.status.error_message')[0], $matches)) { 
    $I->sendPOST($this->route, [ 
     'token' => Fixtures::get('token'), 
     'id' => Fixtures::get('some_id') 
    ]); 
    $I->seeResponseCodeIs(200); 
    $I->seeResponseIsJson(); 
    $I->seeResponseContains('"something"'); 
    $I->seeResponseContains('"something_else"'); 
} else { 
    //And if I don't get needed parameter with regular expression, here I have to force test fail 
} 

Кто-нибудь знает, как заставить тест терпит неудачу?

Заранее благодарен!

+0

Было бы полезно, если бы вы могли предоставить нам гораздо больше информации. Во-первых, является ли ваш тест приемлемым, функциональным или единичным тестом? Что еще более важно, почему вы хотите заставить тест потерпеть неудачу? Что вы пытаетесь достичь? –

+0

Это тестирование api. Мне нужно заставить сбой, например, проверить, был ли создан какой-то объект в БД – Serogia

+0

. Не знаете, какой тип теста вы пытаетесь запустить. Возможно, вы можете опубликовать свой код теста и бит кода, который вы пытаетесь проверить. –

ответ

1

Вы можете использовать действие сбоя на вашем акторе. то есть

$I->fail('this test fails... just because'); 
2

Вы можете пометить свой тест как пропущенный или неполный. Вот пример:

public function tryToMakeAwesomeThings(ApiTester $I, Scenario $scenario) 
{ 
    if (...) { 
     // do something 
    } elseif (...) { 
     $scenario->incomplete(); 
    } elseif (...) { 
     $scenario->skip(); 
    } 
} 
Смежные вопросы