2010-09-10 44 views
7

Tôi đang nghĩ đến việc chạy thử nghiệm dưa chuột trên ứng dụng đường ray khi chạy trên heroku. Đây có phải là một cách lành mạnh để kiểm tra sự khác biệt giữa môi trường phát triển và môi trường triển khai không?Chạy thử nghiệm dưa chuột trên heroku

Có ai có kinh nghiệm về loại kịch bản này không? Rake -T nói với tôi "nhiệm vụ cào dưa chuột không có sẵn (dưa chuột không được cài đặt)" mặc dù tôi đã chỉ định dưa chuột-ray trong tập tin .gems của tôi. Tôi đang tiếp cận điều này từ góc độ sai?

Bất kỳ ý tưởng hoặc đề xuất nào?

Trả lời

0

Có phải đá quý cucumber cũng có trong bản kê Gem của bạn không?

1

Điều đó sẽ yêu cầu tạo, sửa đổi và loại bỏ cơ sở dữ liệu thử nghiệm tiếp theo, và vì Heroku bỏ qua tệp database.yml, điều này hoàn toàn không thể thực hiện được.

Bạn có thể thử chạy ứng dụng của bạn trong môi trường thử nghiệm bằng cách đặt nó trong giao diện điều khiển, và sau đó bạn có thể chạy thử nghiệm

heroku config:add RACK_ENV=test 

nhưng ngay cả khi bạn có được điều này để làm việc, nói lời tạm biệt với bạn sản xuất cơ sở dữ liệu như tôi khá chắc chắn Heroku sẽ một lần nữa ghi đè lên database.yml và sử dụng cơ sở dữ liệu nó tự động được gán cho ứng dụng của bạn.

Bạn cũng có thể cân nhắc tạo một second app on Heroku chỉ để thử nghiệm.

3

Bạn có thể sử dụng một phiên bản Heroku riêng biệt và triển khai ứng dụng của bạn ở đó. Sau đó bạn có thể chạy thử nghiệm của bạn thông qua cào heroku.

Bạn có thể sử dụng tham số --app cho dòng lệnh heroku để chọn thể hiện để chạy lệnh trên đó. Chỉ cần không xóa cơ sở dữ liệu prod của bạn một cách tình cờ.

0

Vì chạy thử nghiệm trực tiếp trên Heroku có vẻ không quá nhỏ, tôi đã sử dụng để chỉ định thử nghiệm cục bộ cho ứng dụng Heroku, sử dụng các cuộc gọi HTTParty thay cho các cuộc gọi Capybara thông thường.

Điều này có thể hoạt động tốt, ít nhất là cho các bài kiểm tra tích hợp.

Ví dụ, đây là phương pháp tôi sử dụng trong định nghĩa bước khi chạy thử nghiệm địa phương truyền thống chống lại các ứng dụng địa phương:

def my_http_request(httpmethod, path, body = '') 
    send httpmethod, path, body 
    end 

và đây là phương pháp tôi sử dụng khi chạy thử nghiệm địa phương chống lại các ứng dụng Heroku:

def my_http_request(httpmethod, path, body = '') 
    options = body.blank? ? { :headers => {"Content-Length" => "0"} } : { :body => body } 
    @last_response = HTTParty.send httpmethod, 'https://lit-*****-6305.herokuapp.com' + path, options 
    end 

Tôi tải một hoặc cái khác vào thế giới dưa chuột, dựa trên tùy chọn cụ thể được chuyển đến chính Cucumber và đặt trong cấu hình có liên quan (để tôi có thể gọi cucumber -p heroku khi tôi muốn thử nghiệm với Heroku).

Tất nhiên, trong trường hợp thứ hai tôi cũng phải chăm sóc khởi tạo cơ sở dữ liệu Heroku trước mỗi kịch bản, gọi ví dụ một cái gì đó như thế này trong một 'trước khi' móc:

def start_my_heroku_tests 
    @@db = PGconn.open(:host => 'ec2-54-**-****-44.compute-1.amazonaws.com', :port => 5432, :dbname => 'd4d********rmi4k', :user => 'llcm*******jcyh', :password => '7FN_************gcxq') 
    @@db.exec "TRUNCATE sources" 
    @@db.exec "TRUNCATE posts" 
    end 
Các vấn đề liên quan