1

私は、(とりわけ) を介して SSH キーを検証するカスタム リソースを使用してクックブックを作成していますssh-keygen。無効な入力とリソースのユーザーフィードが例外を発生させるシナリオをテストする必要があるため、「次の入力が与えられた場合... Chefの実行が失敗する」ことを確認する方法を探しています。

私がすべてを正しく理解していれば、Test Kitchen はすべての収束が成功することを意味し、ChefSpec はリソースが実際には実行されないことを意味します (したがって、私の ssh-keygen 呼び出しはまったく呼び出されません)。

そのような場合をテストする従来の方法はありますか?

4

1 に答える 1

1

custom_resource の内部ビットをテストするには、ChefSpec に step_into を指示する必要があります。通常、ChefSpec はプロバイダーを実行しません。

失敗時に適切なテストを行うには、ドキュメントのここでexpect(:chef_run).to raise_error説明する必要があります

のドキュメントの引用step_into:

LWRP によって公開されたアクションを実行するには、それにRunnerステップインするよう明示的に指示する必要があります。

「シェフスペック」が必要

describe 'foo::default' do
  let(:chef_run) do
    ChefSpec::SoloRunner.new(step_into: ['my_lwrp']).converge('foo::default')
  end

  it 'installs the foo package through my_lwrp' do
    expect(chef_run).to install_package('foo')
  end
end

注: クックブックが LWRP を公開している場合は、以下の「カスタム Matcher のパッケージ化」セクションで説明されているように、libraries/matchers.rb ファイルも作成することを強くお勧めします。テストしていない限り、LWRP にステップインしないでください。別のクックブックから LWRP にステップインしないでください。

于 2017-06-23T07:45:56.307 に答える