Unit testing 启动RSpec单元测试的正确方法
我创建了一个简单的Puppet 4类和一个单元测试,如下所示(在Unit testing 启动RSpec单元测试的正确方法,unit-testing,rspec,puppet,rspec-puppet,Unit Testing,Rspec,Puppet,Rspec Puppet,我创建了一个简单的Puppet 4类和一个单元测试,如下所示(在模块/test/中执行touch metadata.json;rspec Puppet init之后): 在modules/test/中,我可以通过执行rspec spec/classes/test\uuuuu hello\u world1\u spec.rb成功运行单元测试 现在我想继续学习一个稍微高级一点的类,它使用另一个模块的代码,即(该模块已经安装在modules/concat)中: 当我尝试使用rspec spec/cla
模块/test/
中执行touch metadata.json;rspec Puppet init
之后):
在modules/test/
中,我可以通过执行rspec spec/classes/test\uuuuu hello\u world1\u spec.rb
成功运行单元测试
现在我想继续学习一个稍微高级一点的类,它使用另一个模块的代码,即(该模块已经安装在modules/concat
)中:
当我尝试使用rspec spec/classes/test\uuuu hello\u world2\u spec.rb运行此单元测试时,在modules/test
中,我收到一条错误消息,其中包括:
失败/错误:编译期间{is_expected.to compile}错误:
求值错误:求值资源语句时出错,未知
资源类型:“concat”
我怀疑根本原因是rspec
找不到其他模块,因为它没有被告知“模块路径”
我的问题是:我应该如何准确地启动单元测试,特别是那些需要访问其他模块的单元测试?从its为您的平台安装。使用pdk new module
和pdk new class
或按照以下步骤重新创建模块
现在,我来谈谈您的代码中可能存在的直接问题:您的代码依赖于Puppet Forge模块,puppetlabs/concat
,但您还没有提供它。PDK模块模板已经预先配置了puppetlabs\u spec\u helper
,以加载模块的夹具
要告诉puppetlabs\u spec\u helper
为您获取它,您需要一个包含以下内容的文件.fixtures.yml
:
fixtures:
forge_modules:
stdlib: puppetlabs/stdlib
concat: puppetlabs/concat
请注意,您还需要puppetlabs/stdlib
,因为这是puppetlabs/concat
的依赖项
如果您想探索更多夹具的可能性,请参阅
所有这些就绪,并将您发布的代码示例和测试内容集成到PDLK提供的初始代码框架中,您的测试现在将在运行时全部通过:
$ pdk test unit
请注意,我在一篇博客文章中写了所有关于底层技术的内容,展示了如何从零开始设置rspecpuble和更多内容(),它似乎仍然是关于这个主题的最新参考资料
要了解更多关于rspec傀儡的信息,请参考官方网站
fixtures:
forge_modules:
stdlib: puppetlabs/stdlib
concat: puppetlabs/concat
$ pdk test unit