2012-10-23 36 views
8

Tôi chỉ đang xây dựng bộ thử nghiệm cho ứng dụng Rails cũ. Các đá quý simplecov đã được tuyệt vời cho việc tìm kiếm các góc tối của ứng dụng cần kiểm tra bảo hiểm (hoặc có thể hoàn toàn không sử dụng và OK để loại bỏ). Tôi gọi simplecov chỉ đơn giản bằng cách bao gồm những điều sau ở đầu test/test_helper.rb:Làm cách nào để kiểm tra phạm vi mã cho các mẫu Rails ERB?

require 'simplecov' 
SimpleCov.start('rails') 

Vấn đề là điều này không kiểm tra tất cả các mã được nhúng vào trong các mẫu. Có tất cả các loại rác trong đó, và tôi chắc chắn rất nhiều nó chỉ có thể được gỡ bỏ, nhưng nó sẽ thực sự tốt đẹp nếu một công cụ bảo hiểm mã có thể chỉ cho tôi các bit không sử dụng. Một số thử nghiệm với thư viện Coverage của Ruby 1.9 khiến tôi tin rằng nó chỉ có thể thực hiện công việc nếu các mẫu được biên dịch trước mã Ruby, được lưu trong các tệp nguồn Ruby, và sau đó load ed hoặc require d, thay vì tải các mẫu đã biên dịch trực tiếp với eval. HOẶC, có thể có khả năng hack ERB để thêm các câu lệnh ghi vào mỗi dòng của mỗi khuôn mẫu trong suốt quá trình biên dịch.

Có ai có bất kỳ ý tưởng nào khác về cách đo lường phạm vi mã của các mẫu ERB không? Bạn có biết một công cụ đã tạo sẵn có thể làm điều này không? (Hoặc tôi sẽ phải là người để xây dựng và phát hành nó?)

Trả lời

8

Xem: How do I get coverage for view specs with rspec, rails, and simplecov?

Câu trả lời là, bạn không thể:

https://github.com/colszowka/simplecov/issues/38

Đó là lỗ hổng nghiêm trọng mà tôi hy vọng ai đó sẽ giải quyết. AFIK không có gì tốt hơn so với simplecov cho Ruby 1.9

+1

OK. Cảm ơn. Tôi chấp nhận câu trả lời này ... nhưng sau đó tôi nghĩ tôi có thể phải tự mình tạo ra một giải pháp cho vấn đề này, và nếu tôi làm thế, điều đó sẽ trở thành câu trả lời được chấp nhận. –

-2

thử cào stats

nó sẽ tạo ra một bảng có độ che phủ của tất cả các phần của ứng dụng

+0

Tôi đã thử điều này. Nó dường như không hoạt động. –

+0

Phiên bản Rails của bạn là gì .. nó hoạt động hoàn toàn tốt trên Rails 3.2.3 ... hãy thử chạy rake -T và đọc phần mô tả các tác vụ được liệt kê trong đó ... –

+1

Tôi không muốn biết * cách nhiều * dòng mã có trong các mẫu của tôi. Tôi muốn biết có bao nhiêu dòng trong số đó được * thực hiện bởi bộ thử nghiệm của tôi *. Vui lòng đọc kỹ câu hỏi. –