Giới thiệu hàm aggregate_failures() trong RSpec
Ruby
106
Testing
24
White

Lơi Rệ viết ngày 30/06/2015

Test framework của RSpec luôn làm tôi bất ngờ với nhiều hàm dường như rất ít được biết đến nhưng khá là hữu dụng. Hôm nay trong khi phỏng vấn một ứng cử viên cho vị trí junior dev tại cty, tôi học lỏm được hàm expectation tên #aggregate_failures.

Vậy hàm này là gì? Dùng cho trường hợp nào.

Hàm này được sử dụng để nhóm nhiều assertion lại với nhau và nếu một trong assertion bị fail thì cho ra thống nhất một exception. Lấy vd nhé:

# kiểm tra xem request có oke không
expect(response.status).to eq(200)

# kiểm tra request
expect(response.headers).to include("Content-Type" => "text/plain")

# xem body có từ khoá Success
expect(response.body).to include("Success")

ví dụ trên là một ví dụ phổ biến được thấy nhiều trong API app, và thường là được tách ra làm 3 example rõ ràng, nhưng tôi muốn gộp 3 cái assertion đấy lại thành một thì tôi có thể làm như sau:

aggregate_failures('invalid request') do
  expect(response.status).to eq(200)
  expect(response.headers).to include("Content-Type" => "text/plain")
  expect(response.body).to include("Success")
end

điều này nghĩa là nếu một trong cái assertion trên có vấn đề thì test của tôi không bị gián đoạn (tiếp tục chạy tiếp cái assertion tiếp theo). Nếu chỉ có 1 assertion bị fail thì nó quăng Expectations::ExpectationNotMetError, còn nếu có trên 1 assertion bị fail thì nó quăng Expectations::MultipleExpectationsNotMetError.

Lợi ích của hàm này nó giúp nhóm nhiều assertion lại thành 1, thuận tiện cho việc chia sẻ và đồng thời cũng giúp giảm thời gian chạy test trong một số app mà phần thiết lập môi trường test mất thời gian so với cách thức chia các assertion chạy riêng biệt trong từng example.

Còn muốn tìm hiểu thêm nữa thì các bạn cứ gốc-gồ là ra API :)

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lơi Rệ

43 bài viết.
206 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
65 12
Sự sống còn của các công ty kỹ thuật phụ thuộc vào nguồn nhân lực chất xám của họ. Thế nên rất thiết yếu cho việc đầu tư xây dựng team có khả năng ...
Lơi Rệ viết gần 2 năm trước
65 12
White
38 7
Trời se se lạnh, Melbourne chuyển mùa, ngồi trong quán cafe bắt đầu một ngày làm việc mới với suy nghĩ tại sao các bạn Việt Nam không muốn tham gia...
Lơi Rệ viết gần 3 năm trước
38 7
White
36 15
Thế nào là làm việc từ xa? Internet, một trong những phát minh vĩ đại nhất của con người thế kỷ 20. Công nghệ này xoả bỏ rào cản vật lý giữa các n...
Lơi Rệ viết 2 năm trước
36 15
Bài viết liên quan
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết hơn 2 năm trước
8 6
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết hơn 2 năm trước
8 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
43 bài viết.
206 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!