2010-04-15 23 views
7

Có thể cho phương thức rspec nhận giá trị của tham số được truyền cho nó() trong phương thức cục bộ không? Ví dụ, nếu tôi muốn:rspec "it" string

describe Me do 
    it "should figure this out" 
    puts "I " + SPEC_NAME 
    end 
end 

in này:

I should figure this out 

... những gì tôi sẽ đưa cho SPEC_NAME trong mẫu mã?

Thậm chí tốt hơn, làm thế nào một nhà lý học tương đối mới giống như tôi tự mình tìm ra điều này?

Trả lời

7

Phương pháp description nên làm những gì bạn muốn. ví dụ.

describe Me do 
    it "should figure this out" do 
    puts "I " + description # or "I #{description}" using string interpolation 
    end 
end 

Xét về làm thế nào để con số này ra, tôi thấy nó bằng cách tìm kiếm trong RDocs for RSpec, bắt đầu bằng cách nhìn vào nguồn gốc của phương pháp it để xem cách nó hoạt động. Sau đó bạn sẽ thấy rằng RSpec đề cập đến chuỗi "nó" là "mô tả" để bạn có thể tìm kiếm các phương thức có sẵn bao gồm mô tả trong tên của chúng.

Tôi biết nó không được sử dụng nhiều cho bạn ngay bây giờ, nhưng khi bạn tìm hiểu thêm Ruby bạn sẽ thấy dễ đọc mã trong các thư viện như RSpec và sẽ phát triển bản năng về cách chúng có thể được triển khai, sẽ giúp bạn tìm đúng nơi cho mọi thứ.

+0

Thật hoàn hảo, cảm ơn! – lambinator

+1

Tôi đã thử với RSpec 2.8.0, nhưng nó không hoạt động ngay lập tức. Đối tượng này đang chạy trên cái gì? Tôi tìm thấy: RSpec :: ExampleGroup :: Nested_2 (Tôi đoán đó là ExampleGroup cho bạn) Giải pháp cho tôi là: example.description – inger

+0

+1 để bao gồm hướng dẫn về cách tìm ra những thứ như thế này từ nguồn/tài liệu. – ErJab

0

này không trả lời câu hỏi của bạn một cách chính xác, nhưng nếu bạn đang cố gắng để in ra mỗi bài kiểm tra là nó chạy, đặt điều này trong spec.opts tập tin của bạn:
--format specdoc

Dưới đây là một ví dụ về những gì các bài kiểm tra của tôi trông như khi tôi chạy chúng:

A new release when parsing the artist containing a full join word 
- should remove it 
- should not remove it when it is inter-word 

A new release when parsing the artist containing an abbreviated joining word 
- should remove it when there is a period after it 
- should remove it when when there is not a period after it 
- should not remove it when it is inter-word with a period after it 
- should not remove it when it is inter-word without a period after it 

A new release when parsing the artist 
- should be invalid if the year is not current 
- should be valid if it is the current year 
+0

Không hoàn toàn là những gì tôi đang tìm kiếm, nhưng mẹo tuyệt vời! – lambinator

1

với nhiều phiên bản gần đây của RSpec (tôi đang sử dụng 2.14), bạn có thể tham khảo nó như example.description.

it "prints itself" do 
    puts "My description string is '#{example.description}'." 
end