Có, bạn có thể thử các yêu cầu. Tôi đã có một câu trả lời dài toàn bộ ở đây mô tả làm thế nào để làm điều đó, nhưng trên thực tế đó không nhất thiết phải là những gì bạn muốn.
Chỉ cần gọi phương thức trợ giúp của bạn trên đối tượng trợ giúp trong ví dụ của bạn. Giống như vậy:
describe "#item" do
it "does whatever" do
helper.item.should ...
end
end
Điều đó sẽ cho phép bạn truy cập đối tượng yêu cầu thử nghiệm. Nếu bạn cần phải xác định một giá trị cụ thể cho đường dẫn yêu cầu, bạn có thể làm như vậy như thế này:
before :each do
helper.request.path = 'some-path'
end
Trên thực tế, cho đầy đủ, hãy để tôi bao gồm câu trả lời ban đầu của tôi, vì tùy thuộc vào những gì bạn đang cố gắng để làm điều đó vẫn có thể hữu ích.
Đây là cách bạn có thể thử các yêu cầu:
request = mock('request')
controller.stub(:request).and_return request
Bạn có thể thêm các phương pháp còn sơ khai để yêu cầu quay trở lại tương tự
request.stub(:method).and_return return_value
Và cú pháp thay thế để thử & còn sơ khai tất cả trong một dòng:
request = mock('request', :method => return_value)
Rspec sẽ khiếu nại nếu giả của bạn nhận được messa ges mà bạn không stub. Nếu có những thứ khác Chỉ cần gọi phương thức trình trợ giúp yêu cầu của bạn trên đối tượng trợ giúp đang làm mà bạn không quan tâm trong bài kiểm tra của mình, bạn có thể tắt rspec bằng cách tạo giả lập một "đối tượng rỗng", ví dụ. như Giống như rất
request = mock('request').as_null_object
Dường như tất cả các bạn có thể cần phải nhận được qua thử nghiệm cụ thể của bạn là thế này:
describe "#item" do
let(:request){ mock('request', :fullpath => 'some-path') }
before :each do
controller.stub(:request).and_return request
end
it "does whatever"
end
Bạn đã "require 'rspec/đường ray" trong spec_helper.rb của bạn? – Rubyman
Vâng, tôi có. Cảm ơn. –