У меня есть API для регистрации пользователей с некоторыми полями, которые вы ожидаете от обычной регистрации пользователя
API возвращает ответ примерно так, когда регистрация прошла успешно
{
"response": {
"httpCode": 200,
"Message": "Registration is complete."
}
}
Но иногда может случиться так, что электронная почта уже получена, в этом случае возвращается подходящее сообщение с кодом состояния 400
{
"response": {
"httpCode": 400,
"Message": "Email already taken."
}
}
Сейчас я на тестировании, для которого я написал этот тест
public function testSignup()
{
$response = $this->call('POST', '/api/signup', [
'first_name' => 'abc',
'last_name' => 'xyz',
'username' => 'iamgroot',
'email' => 'hello@example.com',
]);
$response->assertStatus(200)->assertJsonStructure([
'response' => [ 'httpCode' , 'Message' ]
]);
}
При выдаче свежего электронного письма в тестовом сценарии оно проходит (вместе с другими тестами), но при повторном запуске того же теста оно, очевидно, дает сбой, поскольку ответ отличается, но, говоря техническим языком, на самом деле это не ошибка, и код работает как ожидается, так как я могу сделать что-то вроде ИЛИ, чтобы при наличии любого из двух форматов ответа это прошло, так как добавление просто другого утверждения для кода состояния 400 будет просто И им.