【问题标题】:Using a defined type of an yet unreleased puppet module使用已定义类型的尚未发布的 puppet 模块
【发布时间】:2020-10-31 03:35:50
【问题描述】:

我们目前正在开发三个 puppet 模块。 一个包含一个已定义类型,其他两个应使用该类型。这个模块,我们称之为 ModuleA,尚未发布到我们的本地锻造/存储库中,并且在至少在其他两个模块中的一个(公司程序)中成功实施和测试之前不会发布。

定义类型在其他两个模块中用于创建资源并通过“包含”引用。 在 metadata.json 中,ModuleA 被添加为依赖项。

当我运行pdk test unit 时,它失败了,因为定义的类型是未知的。 目前其他两个模块中只有一个it { is_expected.to compile.with_all_deps } 测试,没什么复杂的。

如果ModuleA还没有发布,如何测试其他两个模块?

【问题讨论】:

    标签: puppet pdk


    【解决方案1】:

    如果ModuleA还没有发布,如何测试其他两个模块?

    您对其他模块的测试可以提供所需定义类型的存根实现。这可以通过:pre_condition 来完成:

    describe 'Module_b::Some_class' do
      let(:pre_condition) { 'define module_a::some_type($param1, $param2) { }' }
    
      # ...
    end
    

    请确保存根的数量和名称与实际定义的类型匹配。

    【讨论】:

    • 感谢您的回答,但它不起作用。我什至将定义的类型复制到:pre_condition,但我仍然收到那些Puppet::Error: # Could not find class ::module_a::some_type for mydevpc.localdomain 错误
    • @MichaelP.,你说你正在处理一个定义的类型,这个答案对此做出了回应。但是,如果 Puppet 抱怨它“找不到 class [...]”,那么被测代码需要一个类。类和定义的类型不可互换。您也可以使用:pre_condition 来声明一个类,但在更改之前,您应该理清模块 A 实际提供的内容,以及您是否需要它提供的内容。
    • 我知道 defined typeclass 是不可互换的。遗憾的是,两者的错误消息是相同的。
    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多