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

Định nghĩa các hàm get single post, update và delete post (tiếp tục)

6. Tiếp theo, nhập khẩu hàm updatePost:

updatePost,

} from ‘../services/posts.js’

7. Sau đó, thêm các tests cho cập nhật một post thành công. Chúng ta thêm một test để thẩm định rằng đặc tính chỉ
ra đã được thay đổi và test khác để thẩm định rằng nó không can thiệp với các đặc tính khác:
code 1
8. Ngoài ra, thêm một test để đảm bảo updatedAt timestamp đã được cập nhật. Để làm như vậy, trước tiên chuyển đổi
các Date objects thành các số bằng cách sử dụng .getTime(), và sau đó chúng ta có thể so sánh chúng bằng cách sử
dụng cái khớp expect(…).toBeGreaterThan(…):
code 2
9. Cũng là, thêm một test thất bại để xem liệu hàm updatePost có trả về null khi không post nào với một ID khớp
đã được tìm thấy:

test(‘should fail if the id does not exist’, async () => {

const post = await updatePost(‘000000000000000000000000’, {

author: ‘Test Author’,

})

expect(post).toEqual(null)

})

})

10. Cuối cùng, nhập khẩu hàm deletePost:

deletePost,

} from ‘../services/posts.js’

11. Sau đó, thêm các tests cho các xóa thành công và không thành công bằng cách kiểm tra xem liệu post đã được xóa
và thẩm định deletedCount trả về:

describe(‘deleting posts’, () => {

test(‘should remove the post from the database’, async () => {

const result = await deletePost(createdSamplePosts[0]._id)
expect(result.deletedCount).toEqual(1)
const deletedPost = await Post.

findById(createdSamplePosts[0]._id)

expect(deletedPost).toEqual(null)

})

test(‘should fail if the id does not exist’, async () => {

const result = await deletePost(‘000000000000000000000000’)
expect(result.deletedCount).toEqual(0)

})

})

12. Cuối cùng, chạy tất cả các tests lại một lần nữa; tất cả chúng sẽ qua:

$ npm test

Viết các tests cho các hàm dịch vụ có thể là nhàm chán, nhưng nó sẽ giải phóng cho chúng ta nhiều thời gian trong
dài hạn. Thêm chức năng thêm sau này, như kiểm soát truy cập, có thể thay đổi hành vi cơ bản của các hàm dịch vụ.
Bằng cách có các unit tests, chúng ta có thể đảm bảo rằng chúng ta không phá vỡ hành vi hiện tại khi thêm chức
năng mới.

Chia sẻ