【问题标题】:Chef : Testing a cookbook without a recipe厨师:在没有食谱的情况下测试食谱
【发布时间】:2017-04-27 18:27:00
【问题描述】:

我写了一本食谱来下载 tomcat(食谱名称 = 'my_tomcat')。 资源做所有事情(资源名称'default.rb')并且没有配方。 其他食谱将调用此资源来下载 tomcat。

为了测试这个 tomcat 食谱,我在 test/cookbooks/test/recipes/default.rb 中编写了一个测试食谱,并在我的食谱的 berksfile 中添加了依赖项。 当我运行厨房测试时,它给了我以下错误-

================================================================================
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:  

请让我知道我在这里做错了什么。 我需要在任何地方进行更多更改吗?

【问题讨论】:

    标签: chef-infra cookbook


    【解决方案1】:

    您的食谱 test 必须指定对您的 my_tomcat 食谱的依赖,以便提前加载其资源。

    【讨论】:

    • 所以我在我的测试食谱 metadata.rb-depends 'my_tomcat' 中添加了这个我还需要在其他地方添加吗?
    • 我不知道,你在别处放了什么。你在Berksfile 中有一个cookbook 行指向你的test 食谱,这已经是一个好的开始。请提供更多代码部分。
    • 我的berksfile line-source 'somesource' 元数据cookbook 'test',路径:'test/cookbooks/test'
    • 你的测试食谱的元数据呢?您作为“新手”是否已经能够在上面编辑您的帖子?如果是,请这样做。
    【解决方案2】:

    No resource or method 可能意味着几件事之一。您需要做的第一件事是确保除了在测试说明书的Berksfile 中声明对您的说明书的依赖之外,还将depends 'cookbook' 添加到测试说明书的metadata.rb 文件中。

    完成后,如果错误仍然存​​在,接下来要检查的是您在主说明书中正确命名了自定义资源。

    如果做第一件事不能解决问题,请将您的测试食谱的 Berksfilemetadata.rb 的内容添加到原始问题中,以及主食谱中您的自定义资源文件的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多