Xóa bài viết
Bạn có chắc chắn muốn xóa bài viết này không ?
Xóa bình luận
Bạn có chắc chắn muốn xóa bình luận này không ?
Chạy 2 server trong Capybara
Khởi động một server phụ bên cạnh server chính:
require 'rack/handler/webrick'
server = Sinatra::Application # giả sử bạn dùng một server Sinatra phụ
port = 31777
Rack::Handler::WEBrick.run(server, Host: 'localhost', port: port)
Vậy là bạn đã có 2 server chạy song song với nhau. Tuy nhiên, server Sinatra mới này sẽ chạy trong cùng thread/process hiện tại và chờ request, do đó test của bạn sẽ không thể chạy được. Do đó, bạn phải có bước kế tiếp.
Daemonize server phụ
Gem daemons hỗ trợ daemonize một đoạn code ruby, giúp test của bạn chạy bình thường:
require 'daemons'
Daemons.call do
# Khởi động server ở đây
end
# Code
# Tắt daemons
Daemons.group.stop_all(true)
Integrate với cucumber/capybara
Bạn có thể khởi động server khi test bắt đầu chạy và tắt nó sau khi test kết thúc.
# trong support/env.rb
require 'daemons'
AfterConfiguration do
Daemons.call do
require 'rack/handler/webrick'
server = Sinatra::Application # giả sử bạn dùng một server Sinatra phụ
port = 31777
Rack::Handler::WEBrick.run(server, Host: 'localhost', port: port)
end
end
at_exit do
Daemons.group.stop_all(true)
end
References
Bình luận

{{ comment.user.name }}
Bỏ hay
Hay

Cùng một tác giả

12
3
Khi làm việc với Ruby và Rails, có lẽ không ít lần các bạn đã gặp các tác vụ download file về server của mình. Ruby hỗ trợ nhiều công cụ download k...

12
4
Đối với những người đã từng xây dựng API server, chắc hẳn ai cũng đã từng hơn một lần đau đầu với việc lựa chọn thư viện JSON. Bài viết sau đây hi ...

11
0
Như đã nói trong (Link), mình sẽ chia sẻ tổng hợp kết quả của các benchmark mình đã dùng để so sánh tốc độ render JSON của các thư viện phổ biến hi...
Bài viết liên quan

9
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 ...

9
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...