Thực thi một backend sử dụng Express, Mongoose ODM, và Jest (phần 15)

Định nghĩa các test cases cho posts liệt kê (tiếp tục)

6. Ngoài ra, định nghĩa một test case nơi giá trị sortBy được thay đổi thành updatedAt, và giá trị sortOrder được
thay đổi thành ascending (thể hiện các posts cập nhật cũ nhất trước tiên):
code 1
code 2
7. Sau đó, thêm một test để đảm bảo rằng các posts liệt kê theo author làm việc:

test(‘should be able to filter posts by author’, async () => {

const posts = await listPostsByAuthor(‘Daniel Bugl’)
expect(posts.length).toBe(3)

})

Chú ý
Chúng ta đang kiểm soát môi trường test bằng cách tạo một tập cụ thể các posts mẫu trước khi mỗi test case chạy.
Chúng ta có thể sử dụng môi trường kiểm soát này để đơn giản hóa các tests của chúng ta. Như chúng ta đã biết
rằng chỉ có 3 posts với author đó, chúng ta có thể đơn giản check liệu hàm có trả về chính xác 3 posts. Làm
như vậy giữ các tests của chúng ta đơn giản vì chúng ta kiểm soát môi trường hoàn toàn.
8. Cuối cùng, thêm một test để thẩm định rằng các posts liệt kê theo tag làm việc:

test(‘should be able to filter posts by tag’, async () => {

const posts = await listPostsByTag(‘nodejs’)
expect(posts.length).toBe(1)

})

})

9. Chạy các tests một lần nữa và theo dõi chúng tất cả đi qua:

$ npm test

test
Như chúng ta có thể thấy, cho một vài tests, chúng ta cần chuẩn bị một trạng thái ban đầu. Trong trường hợp của
chúng ta, chúng ta chỉ phải tạo một vài posts, nhưng trạng thái ban đầu này có thể trở nên tinh vi hơn. Ví dụ,
trên một nền tảng blogging tiên tiến hơn, nó có thể là cần thiết để tạo một tài khoản người dùng trước, sau đó
tạo một blog trên nền tảng, và sau đó tạo các blog posts cho blog đó. Trong trường hợp đó, chúng ta có thể tạo
các hàm tiện ích test, như createTestUser, createTestBlog, createTestPost và nhập khẩu chúng trong các tests của
chúng ta. Chúng ta sau đó có thể sử dụng các hàm này trong beforeEach() qua nhiều test files thay vì làm nó thủ
công mọi lần đơn. Phụ thuộc vào cấu trúc ứng dụng của bạn, các hàm tiện ích test có thể được cần, nên cảm thấy tự
do để định nghĩa chúng như bạn thấy phù hợp.
Sau khi định nghĩa các test cases cho hàm liệt kê post, hãy tiếp tục bằng cách định nghĩa các hàm nhận post đơn,
cập nhật post, và xóa post.

Chia sẻ