Conversation
| $this->processRunner = new ProcessRunner(); | ||
| } | ||
|
|
||
| public function testRunWhenIf1TrueAndIf2True() |
There was a problem hiding this comment.
Nên coi class là Unit cần test, tức class là SUT (System Under Test). Vì thế test case sẽ là test hành vi,không nên quá quan tâm đến tên method là gì, bên trong nó implement như thế nào, khi đó có thể thay đổi cách implement nhưng hành vi không thay đổi nên không phải update lại unit test.
Tên method unit test không cần phải ngắn gọn, nên viết theo snake_case để dễ đọc hơn (có thể config phpcs để bỏ qua naming convention với các method test, xem phpcs.xml)
Có 1 cách đặt tên như thế này: Test It <expected result> When <input are ...>
=> Test It called process1 and process3 When input1 is 12 and input2 can be whatever
| public function testRunWhenIf1TrueAndIf2True() | |
| public function test_IT_called_process1_and_process3_WHEN_input1_is_12_input2_is_whatever() |
Tên test case cho thấy rõ ràng expect là gì.
| { | ||
| $result = $this->processRunner->run(12, 3); | ||
|
|
||
| $this->assertEquals(2, $result); |
There was a problem hiding this comment.
Chưa đủ assert, vì không ở test case dưới https://github.com/sun7pro/phpunit-training-coverage/pull/6/files#diff-2ccad413df4fa96d3b36fd1b9389b09fR29 kết quả trả về vẫn là 2, làm sao để phân biệt?
Purpose/Notes (*)
Unit test for class ProcessRunner
Coverage (*)
(PHPUnit coverage screenshot)

Checklist (*)