Giới thiệu hàm aggregate_failures() trong RSpec
Ruby
116
Testing
30
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.
231 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
74 13
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 hơn 2 năm trước
74 13
White
42 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 gần 3 năm trước
42 15
White
40 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 hơn 3 năm trước
40 7
Bài viết liên quan
White
5 0
1. Định nghĩa Một kế hoạch kiểm thử dự án phần mềm (test plan) là một tài liệu mô tả các mục tiêu, phạm vi, phương pháp tiếp cận, và tập trung vào...
Thiên Hoàng Minh Vũ viết 10 tháng trước
5 0
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 3 năm trước
8 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
43 bài viết.
231 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á!