Chef infra 厨师:测试一本没有菜谱的食谱
我写了一本食谱来下载tomcat(食谱名称='my_tomcat')。 资源无所不能(资源名为'default.rb'),并且没有配方。 其他食谱将调用此资源下载tomcat 为了测试这个tomcat cookbook,我在test/cookbooks/test/recipes/default.rb中编写了一个测试cookbook,并在我的cookbook的berksfile中添加了依赖项。 当我运行kitchen测试时,它给出了以下错误-Chef infra 厨师:测试一本没有菜谱的食谱,chef-infra,cookbook,Chef Infra,Cookbook,我写了一本食谱来下载tomcat(食谱名称='my_tomcat')。 资源无所不能(资源名为'default.rb'),并且没有配方。 其他食谱将调用此资源下载tomcat 为了测试这个tomcat cookbook,我在test/cookbooks/test/recipes/default.rb中编写了一个测试cookbook,并在我的cookbook的berksfile中添加了依赖项。 当我运行kitchen测试时,它给出了以下错误- ===========================
================================================================================
Recipe Compile Error in /tmp/kitchen/cache/cookbooks/test/recipes/default.rb
================================================================================
NoMethodError
-------------
No resource or method named `my_tomcat' for `Chef::Recipe "default"'
Cookbook Trace:
---------------
/tmp/kitchen/cache/cookbooks/test/recipes/default.rb:3:in `from_file'
Relevant File Content:
----------------------
/tmp/kitchen/cache/cookbooks/test/recipes/default.rb:
1: package 'java-1.7.0-openjdk'
2:
3>> my_tomcat '/apps/tools/apache' do
4: version '7.0.32'
5: end
6:
请让我知道我做错了什么。
我需要在任何地方做更多的更改吗?您的食谱
测试必须指定对您的my_tomcat
食谱的依赖关系,以便提前加载其资源。没有任何资源或方法可以意味着其中一件事。您需要做的第一件事是确保,除了在测试cookbook的Berksfile
中声明对您的cookbook的依赖关系外,还将依赖“cookbook”
添加到测试cookbook的metadata.rb
文件中
完成后,如果错误仍然存在,下一步要检查的是您是否在主食谱中正确命名了自定义资源
如果做第一件事不能解决问题,请将测试手册的Berksfile
和metadata.rb
的内容添加到原始问题中,与主烹饪书中自定义资源文件的内容一起。所以我在我的测试烹饪书metadata.rb中添加了这个-取决于“my_tomcat”,我还需要添加其他地方吗?我不知道,您在其他地方添加了什么。在Berksfile
中有一行cookbook
指向您的测试cookbook,这已经是一个很好的开始。请提供您的代码的更多部分。My berksfile行-源“somesource”元数据食谱“test”,路径:“test/cookbooks/test”以及您的测试食谱的元数据?你作为“新手”已经能够编辑你的帖子了吗?如果是,请这样做。