2010-09-28 23 views
23

RSpec cho phép bạn để có được tên phương pháp kiểm tra dòng điện chạy trong một trước (: mỗi) chặn, bằng cách làm như sau:Bắt tên thử nghiệm RSpec đầy đủ từ bên trong một trước (: mỗi) chặn

Spec::Runner.configure do |config| 
    config.before :each do |x| 
    x.method_name # returns 'should be cool' 
    end 
end 

Đây là một thử nghiệm như:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 

describe 'Hello world' do 
    it 'should be cool' do 
    # test code 
    end 
end 

nó sẽ có thể để có được tên kiểm tra toàn với những gì nó mô tả, (aka 'Hello World nên mát mẻ') trong khi khối?

Trả lời

19

Trong RSpec 2.0, bạn có thể sử dụng (Tôi không chắc chắn nếu nó là một cách tốt nhất nhưng nó hoạt động)

x.example.metadata[:example_group][:full_description] 

Đối với RSpec 1.x Tôi không biết. Và đó có thể là những gì bạn đang yêu cầu ...

11

Tôi đã tìm thấy câu trả lời. Hóa ra có được sử dụng để được một phương pháp gọi là full_description trên x mà sẽ làm chính xác những gì tôi muốn, tuy nhiên nó đã không được chấp nhận. Sau đây tạo ra chuỗi Tôi muốn:

"#{x.class.description} #{x.description}" 

Reference

+3

'x.class.description' không hoạt động trong RSpec 2.13 – szeryf

+0

' x.example.metadata [: description_args] .join (',') ' – omarshammas

+1

https://www.relishapp.com/rspec/rspec-core/ v/3-4/docs/metadata/current-example <- tài liệu giải thích đúng cách để làm điều đó .. – Urkle

6

hoặc bạn có thể sử dụng phương pháp trực tiếp:

x.example.description 
x.example.file_path 

, vv

+0

cũng thử: describe_class – ajahongir

+0

Điều này làm việc trong RSpec 2.13 (ngoại trừ rằng nó 'x.described_class' không' x.example.described_class' như tôi nghĩ ban đầu). – szeryf

1

trên rspec 2.12.0 "#{x.class.description} #{x.example.description}" làm việc

0

Bạn có thể nhận được các tập tin là tốt. Tôi sử dụng này để theo dõi các vấn đề với thông số kỹ thuật poltergeist tôi:

config.before(:each, js: true) do |s| 
    md = s.example.metadata 
    x = md[:example_group] 
    Rails.logger.debug "==>>> #{x[:file_path]}:#{x[:line_number]} #{md[:description_args]}" 
    end 

Lưu ý rằng đây là số dòng của nhóm dụ (không quá hữu ích), nhưng mô tả về các ví dụ hiện nay, mà sẽ giúp bạn xác định một cái đang chạy.

== >>> ./spec/features/editing_profiles_spec.rb:3 [ "Thành viên Chỉnh sửa một hồ sơ"]

7

Với RSpec 3.3 nó hoạt động như thế này:

RSpec.configure do |config| 
    config.before :example do |x| 
    Rails.logger.debug("=== running spec example #{x.metadata[:full_description].inspect}") 
    end 
end 
Các vấn đề liên quan