0
我已經編寫了以下serverspec資源類型以檢查密鑰是否具有某些YAML配置文件的正確值我擁有 對於散列表中的每個密鑰我在資源類型實例上分配一個屬性。如果某個鍵不存在,我想用適當的消息失敗。
在挖掘rspec的代碼後,我發現如果我混入RSpec::Expectations
模塊,我可以調用fail_with()
,它應該報告測試失敗。 但是我從調用fail_with()
的行中得到一個SystemStackError
,表示「堆棧級別太深」。我猜測我做錯了。有沒有辦法讓測試失敗並顯示一條合理的消息?如何向RSpec發信自定義Serverspec資源類型的預期失敗
require 'yaml'
module Serverspec
module Type
class YAMLFile < Base
include RSpec::Expectations
def initialize(path)
yaml = YAML.load_file(path)
return unless yaml
yaml.each { |key, value| self.send('#{key}=', value) }
end
def method_missing(m, *args, &block)
# fail here with message
self.fail_with('The key does not exist in the YAML file')
end
end
def yaml_file(path)
YAMLFile.new(path)
end
end
end
include Serverspec::Type