如何覆盖rspec木偶中的hiera_data



假设我有以下测试:

context 'test' do
  let(:hiera_data) { { :number => '2' } }
  it { should have_module__define_resource_count(2) }
end
context 'test2' do
  let(:hiera_data) { { :number => '10' } }
  it { should have_module__define_resource_count(10) }
end

第一个测试通过了,但当运行第二个测试时,它失败了,因为层次变量number仍然是2。

let(:hiera_data)似乎无法覆盖先前声明的变量。

根据这个自述文件,如果层次结构数据设置在不同的文件中,它应该可以工作,但它不工作。

如何在一个规范文件中多次测试hiera?

我遇到了同样的问题,并被难住了一段时间。最终我发现层次信息是。你可以这样修复它:

let(:facts) {{ :cache_bust => Time.now }}

例如:

木偶代码:

class example::bar {
  notify { 'bar': message => hiera('bar_message') }
}

rspec伪码:

describe "example::bar" do
  let(:facts) {{ :cache_bust => Time.now }}
  describe "first in-line hiera_data test with a" do
    let(:hiera_data) { { :bar_message => "a" } }
    it { should contain_notify("bar").with_message("a") }
  end
  describe "second in-line hiera_data test with b" do
    let(:hiera_data) { { :bar_message => "b" } }
    it { should contain_notify("bar").with_message("b") }
  end
end

这很管用!我有一个PR将其添加到文档中。botfish叉子是hiera木偶助手最近维护的叉子(请参阅原件上的注释)

相关内容

  • 没有找到相关文章

最新更新