我正在编写一些黄瓜测试,为了测试不同的场景,我设置了一个config.yml文件。我使用:
将它加载到我的env.rb中require 'calabash-cucumber/cucumber'
require 'yaml'
# Config file to hold user settings
#CONFIG = YAML::load_file(File.join(File.dirname(File.expand_path(__FILE__)), 'config.yml'))
CONFIG = YAML.load_file("features/support/config.yml")
注释掉的行是我尝试加载文件的另一种变体。
当我调用数据时,我这样做:
@userName = CONFIG[env.to_sym][side.to_sym][type.to_sym][:username]
然而,当它到达这一行时,它会给我以下错误:
"undefined method '[]' for nil:NilClass (NoMethodError)"
([]
是控制台中的空方框。)
我不确定如何纠正这个问题,我99%确定我正确加载YAML文件并正确使用它。
任何想法或建议都会很棒!
编辑:示例YAML数据:
:env:
:side:
type:
:username: "username"
答案 0 :(得分:0)
假设你有config.yml
档案:
env:
side:
type:
username: 'User'
YAML.load_file()
默认情况下不会对哈希进行符号化,因此您需要使用字符串而不是符号来访问值。
puts @userName = CONFIG['env']['side']['type']['username']
#=> User
<强>更新强>
如the Tin Man所述,它取决于您的YML文件的外观。
加载此yml
文件会产生符号化哈希:
:env:
:side:
:type:
:username: 'User'
因此,如果您想访问用户名密钥:
@userName = CONFIG[:env][:side][:type][:username]