2013-07-24 22 views
10

Sau khi nâng cấp từ Rails 3.2 lên Rails 4, ứng dụng của tôi hoạt động, nhưng các bài kiểm tra của tôi, được viết bằng đơn vị kiểm tra, là một thảm họa.Vẫn có thể sử dụng đơn vị thử nghiệm trong thanh ray 4 không?

Minitest được đồn đại là "tương thích" với đơn vị kiểm tra. Tuy nhiên, nếu tôi cố gắng sử dụng Minitest (hiện đã đóng gói), có một loạt các khác biệt - từ tên và các tham số khẳng định * cho (rõ ràng) nhiều thứ khác cả lớn và tinh tế.

Nếu tôi thay vì cố gắng tránh Minitest và cố gắng giữ cho kiểm tra đơn vị đá quý của tôi trong Gemfile, nổ thử nghiệm cào của tôi, nói rằng,

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase' 

Đây là kết quả sau khi gọi

require 'rails/test_help' 

: (

Tôi đã tìm kiếm một thời gian nhưng chưa tìm ra cách nào để tiếp tục sử dụng đơn vị thử nghiệm. Cách thay thế duy nhất có vẻ là một sự tái cấu trúc (đối với chúng tôi, lớn) của mã kiểm tra ur, vì có khoảng 80% thử nghiệm của chúng tôi bị hỏng theo cách nào đó hoặc khác bởi sự không tương thích của Minitest với đơn vị thử nghiệm.

Tuy nhiên, đọc số http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0 Tôi không đề cập đến vấn đề này trong chất - tôi cảm thấy mình phải thiếu điều gì đó.

Có thể làm cho Minitest tương thích hơn với đơn vị thử nghiệm một cách có hệ thống không? Hoặc tiếp tục sử dụng đơn vị thử nghiệm trong Rails 4?

+0

Bạn có thể cụ thể hơn về những điều không tương thích mà bạn đã gặp phải không? – blowmage

+0

assert_include so với assert_includes, assert_not_include vs. assert_not_includes, assert_false vs. refute, assert_true vs. assert. Phương thức process_with_new_base_test bị thiếu (nó cần thiết để bọc này để ngăn chặn việc bôi nhọ các biến đối tượng điều khiển giữa các yêu cầu trên các kiểm tra bộ điều khiển). Với một loạt các bài kiểm tra vẫn bị hỏng, tôi đã từ bỏ tại thời điểm này. –

+0

Bạn có muốn kết nối từ xa với điều này không? Hãy bắn cho tôi một email và chúng tôi sẽ thiết lập nó. – blowmage

Trả lời

3

Bạn có phân lớp phụ: Thử nghiệm :: Đơn vị :: TestCase chứ không phải ActiveSupport :: TestCase?

Có lẽ thử thêm minitest_tu_shim vào nhóm thử nghiệm của bạn:

https://github.com/seattlerb/minitest_tu_shim

hoặc đảm bảo phân lớp ActiveSupport :: TestCase

0

Có hỗ trợ Rails Test :: Unit. Đây là hướng dẫn cho nó.

http://guides.rubyonrails.org/testing.html

Sử dụng tìm kiếm toàn cầu & thay thế trên trường hợp thử nghiệm của bạn để thay đổi tên phương pháp.

Dưới đây là một thử nghiệm hội nhập:

class UserFlowsTest < ActionDispatch::IntegrationTest 

Dưới đây là một thử nghiệm điều khiển:

class UsersControllerTest < ActionController::TestCase 

Hãy thử rails new app để sao chép những người trợ giúp tự động tạo ra và các tập tin khuôn khổ và xem các ví dụ.