Rspec tốt hơn

Tram Ho

Developer không chỉ code mà cần phải viết test đi kèm theo với Code

Trong ngôn ngữ Ruby, RSpec là một trong những testing framework được sử dụng phổ biến nhất. Việc viết test khi coding giúp ích rất nhiều cho developer trong việc đảm bảo chất lượng của các đoạn code được test, giúp điều tra bug xảy ra dễ dàng hơn.

Bài viết này chúng ta cùng tìm hiểu một số tip nên được sử dụng khi viết rspec, giúp các đoạn code testing trở nên hiệu quả và cũng dễ dàng trong việc đọc, maintain


Structure code to right place

Tất cả các test case đều bao gồm 3 block:

  • Setup: Phần code chuẩn bị trước khi chạy test, như khởi tạo các biến , action(let, let!), chạy các function trước khi test(before)
  • Assert: Phần code chứa các test case được khai báo(it)
  • Teardown: Phần code sau khi đã chạy qua các test case(after), thường có nhiệm vụ dọn dẹp, khôi phục các trạng thái được setup ban đầu

Khi viết test ta nên cấu trúc, phân chia code theo đúng các block ở trên:


Use instance_double instead of double

Trong quá trình viết test, có thể ta muốn mock instances của một Class nào đó, khi đó sử dụng instance_double sẽ an toàn hơn sử dụng double:


DESCRIBE for testing target, CONTEXT for scenarios

Dùng Describe để chỉ định đối tượng cần test, Context để mô tả các test case có thể xảy ra, giúp việc code trở nên dễ track hơn, hơn nữa, các context cũng được phân chia, phân biệt với các context khác


Understand how transactions work in RSpec

Transaction mặc định được tạo vào gắn mỗi một example trong Rspec, cho phép database rolled backed về trạng thái ban đầu, sử dụng cho những example sau đó.

Các record được tạo trong before(:context) hay before(:all) sẽ không bị rolled back:


Use bulk method if possible

VIết như trên tránh việc lặp những đoạn code giống nhau (DRY), cũng như chỉ ra tất cả các assertion đều dùng cho một object


Use configs for patterned test case

Cũng là một các viết DRY, code trông gọn hơn và giúp cho người đọc dễ follow hơn:


Trên đây là một số tip mình tìm hiểu được trong quá trình viết Rspec, cảm ơn mọi người đã theo dõi

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo