2016-09-19 70 views
1

是否有标准模式来编写傀儡模块的spec测试,正确创建被测模块包含的模块所需的自定义事实Rspec傀儡模块测试:访问包含的类的自定义事实

我有一个模块,其类包括puppetlabs/mongodb,它使用自定义fact :: root_home(由puppetlabs/stdlib创建)。

看看mongodb的测试代码(特别是spec_helper_local.rb),我看到了创建:root_home测试事实的代码。

但是,在我自己的模块中,除非我在我自己的测试代码中做了一些事情来创建这个事实,否则我的测试将以“评估错误:未知变量”失败,这使得完美,因为测试套件中没有创建事实。

现在我可以在我的模块的spec_helper_local.rb文件中创建这个事实,但是这只是将楼上的问题踢到了包含我的模块的人身上。

我该如何处理?是否有人已经编写了递归下降到包含模块中的代码并创建了测试所需的事实?

+2

规范助手本地的想法并不差,但也可以考虑把它放在测试规范本身的'let'块中。就我所知,没有最佳的做法,这是你想要的。 –

回答

0

将自定义事实添加到测试套件设置中正是您应该做的。

正如您正确地声明,这不会帮助您的模块的下游用户,但这没有考虑到测试套件的重点:完全描述模块评估的环境。

您可以查看rspec-puppet-facts为所有测试设置默认事实(并获得一些其他漂亮的功能)。