Khẳng định trong php
Để hiểu rõ hơn về TDD và sử dụng nó trong thực tế, chúng ta tiếp tục tìm hiểu TDD thông qua phần 2. Sử dụng TDD với framework Laravel nhé Các bạn cũng có thể xem lại phần 1 để hiểu rõ hơn về mô hình TDD. Phần 1. Giới thiệu về TDD, cách hoạt động, nhưng lợi ích và vấn đề gặp phải khi sử dụng TDD I. Chu trình của TDDNhư phần 1 đã có chủ đề cập nhật, Test-Driven Development (TDD) là một cách phát triển phần mềm nhấn mạnh vào việc viết các Test-case trước để chỉ định những logic mà mã nguồn sẽ thực hiện Một chu trình của TDD sẽ bao gồm
II. Áp dụng TDD trong Laravel 7Để hiểu rõ hơn về việc áp dụng TDD trong Laravel như thế nào, chúng ta sẽ bắt đầu từng bước với chức năng bổ sung thêm 1 người dùng mới nhé. 1. Standard is the fieldTrước khi bắt đầu viết mã, các bạn cần có một môi trường để có thể chạy ứng dụng web php
Trong bài viết này, mình sử dụng Cloud9 trên AWS để tạo IDE có thể code được luôn, các bạn có thể xem thêm tại Tạo môi trường trên AWS Cloud9. Chi tiết môi trường sử dụng
2. Khởi tạo dự án laravelSử dụng composer để tạo project laravel
đầu ra
Chỉnh sửa file configCác test-case sử dụng các giá trị trong tệp phpunit. xml doing config when running. Mỗi lần thực thi thì nên làm mới cơ sở dữ liệu, nghĩa là nó sẽ xóa sạch cơ sở dữ liệu và chạy lại di chuyển mỗi lần thực thi. Vì vậy, chúng ta không nên sử dụng cơ sở dữ liệu chung của mã môi trường (local, dev) và cơ sở dữ liệu của bài kiểm tra.
Với cấu hình này, thì khi chạy thử nghiệm, hệ thống sẽ sử dụng DB kiểu sqlite và DB này sẽ được lưu vào RAM, vì vậy, chúng ta không cần thiết phải cài đặt hay tạo cơ sở dữ liệu riêng. And the clock,việc lưu vào RAM sẽ giúp test-case chạy nhanh hơn Lưu ý. Trong dự án thực tế, thường sẽ sử dụng biến môi trường. env chứa các giá trị của môi trường mà bạn đang code, ví dụ local, dev, production. Thì với trường hợp test, chúng ta sẽ tạo 1 file. env. thử nghiệm, khi chạy thử nghiệm, hệ thống sẽ sử dụng các giá trị trong tệp. env. thử nghiệm thay cho. env Cố gắng chạy thử nghiệm với các trường hợp demo có sẵn với cú pháp của phpunit
Hoặc sử dụng câu lệnh của Laravel Artisan để dễ phát triển và gỡ lỗi hơn với đầu ra được hiển thị dễ nhìn hơn
đầu ra
Như vậy là chúng ta đã hoàn thành chuẩn bị để viết test-case. Bây giờ bắt tay vào viết Unit-Test cho màn hình quản lý người dùng nhé 3. Viết UnitTest theo mô hình TDDĐể có thể viết được test-case, chúng ta cần hiểu chức năng này hoạt động như thế nào (phân tích bài toán), sau đó sẽ nghĩ đến giải pháp thực thi chức năng (thiết kế mã luồng). Ví dụ trong API thêm người dùng mới, chúng ta sẽ thiết kế các bước như sau
UnitTest thường được sử dụng để kiểm tra các chức năng nhỏ phục vụ công việc tính toán hoặc chuyển đổi dữ liệu. FeatureTest thường được sử dụng để kiểm tra chức năng hoàn chỉnh như chức năng bổ sung, chỉnh sửa, xóa. Vì vậy, chúng ta sẽ thiết kế test-case như sau
Trong bài viết này, mình sẽ hướng dẫn viết test_before_add_user theo TDD, 2 case test còn lại thì cũng sẽ làm tương tự nhé TestCase cơ sở mã. phpKhi cần gọi đến các phương thức bảo vệ/riêng tư hoặc thay đổi thuộc tính trong lớp, ta sẽ sử dụng \ReflectionClass để thực hiện được. Để tránh phải viết lại mã xử lý logic này, chúng ta thêm đoạn mã sau vào các bài kiểm tra/TestCase. php
UnitTest beforeAddUserBước 1. Viết TestCase mới Sau khi chạy lệnh, tệp UserUnitTest. php sẽ được tạo trong đường dẫn tests/Unit Chú thích
Bước 2. Chạy TestCase 0Bước 3. Viết mã để trả lời ứng dụng được TestCase vừa tạo 1 2Bước 4. Chạy lại UnitTest 3-> Lỗi do mã logic trả về dữ liệu không chính xác Bước 5. Edit code to pass UnitTest 4lặp lại bước 4 và bước 5 cho đến khi vượt qua UnitTest 5-> Đã vượt qua Bài kiểm tra Đơn vị và phương thức trước khi Thêm người dùng đã hoạt động theo đúng logic mà chúng tôi đã phân tích và thiết kế ban đầu Như vậy chúng ta đã hoàn thành xử lý logic cho beforeAddUser, các phần khác trong thiết kế chúng ta sẽ thực hiện các bước tương tự |