Các kịch bản sau đây khá nhiều tổng kết vấn đề của tôi:kiểm tra một ứng dụng dòng lệnh với dưa chuột/Aruba/Timecop: Làm thế nào để tiêm bối cảnh
Scenario: problems with subprocesses
Given the date is 01/01/2012 10:31
When I run `ruby -e "puts Time.now"`
Then the output should contain "10:31"
Nó nắm để When I run ruby -e "puts Time.now"
tung ra một quá trình con và do đó làm cho tất cả các của tôi Timecop.freeze
stubs không hiệu quả, vì họ chỉ làm việc trên quá trình chính. Tôi cần phải bằng cách nào đó 'tiêm' ngữ cảnh hiện tại vào lệnh đang chạy, nhưng tôi dường như không thể nghĩ ra bất cứ điều gì. Tôi đang cố gắng điều gì đó không thể ở đây?
Bước:
require 'timecop'
Given /^the date is (\d+)\/(\d+)\/(\d+) (\d+):(\d+)$/ do |month, day, year, hour, minute|
Timecop.freeze(Time.local(year.to_i, month.to_i, day.to_i, hour.to_i , minute.to_i, 0))
end