【发布时间】:2020-04-26 19:01:45
【问题描述】:
我的测试工作正常,但是当我读到这个article 时,提到了
每个测试方法一个断言
我认为我的测试做出了太多的断言,这是我的测试代码:
<?php
use Laravel\Lumen\Testing\DatabaseMigrations;
use Laravel\Lumen\Testing\DatabaseTransactions;
class GuestTest extends TestCase
{
use DatabaseTransactions;
/** @test */
public function guest_can_register()
{
$response = $this->json('POST', '/register', [
"name" => "Khrisna Gunanasurya",
"email" => "khrisnagunanasurya@gmail.com",
"password" => "adminadmin",
"password_confirmation" => "adminadmin"
]);
$response
->seeStatusCode(HttpStatus::$CREATED)
->seeJsonStructure([
"data" => [
"type",
"id",
"attributes" => [
'name',
'email'
]
]
]);
}
/** @test */
public function registered_guest_can_login()
{
$this->post('/register', [
"name" => "Khrisna Gunanasurya",
"email" => "khrisnagunanasurya@gmail.com",
"password" => "adminadmin",
"password_confirmation" => "adminadmin"
]);
$response = $this->json('POST', '/login', [
'email' => 'khrisnagunanasurya@gmail.com',
'password' => 'adminadmin'
]);
$response
->seeStatusCode(HttpStatus::$OK)
->seeJsonStructure([
'data' => [
'type',
'attributes' => [
'token',
'token_type',
'expires_in'
]
]
]);
}
}
那么我想问的是,对于那些简单的测试,我的测试是否返回了太多的断言?因为我意识到seeJsonStructure() 调用的许多断言取决于嵌套的数组结构,如果我的测试单元做出过多的断言,将来有很多测试文件时会产生问题吗?
编辑
【问题讨论】:
-
整个“每个测试一个断言”的东西更像是一个指导方针,而不是实际会导致问题的东西。关于它的好处是,当测试失败时,您确切地知道出了什么问题。如果您在 1 个测试中有 100 个断言,则可能更难找到。一般来说,我不会太担心。
标签: php unit-testing phpunit lumen