2016-09-29 5 views
0

私は再利用可能なカスタムリソースのライブラリを作成しようとしています。 Thisビデオはそれを行う方法を説明していますが、リソースを単独でテストすることについては言及していません。カスタムシェフリソースをChefSpecと単体で単体テストする方法を教えてください。

私は、レシピとコンバージを使ってリソースをテストできることは知っていますが、自分のリソースをテストするためだけに新しいレシピを書きたくはありません。

私は以下のような何かをしなくてもプロパティを持つカスタムリソースを実行するためのいくつかの方法があります期待していた

let(:chef_run) do 
    runner = ChefSpec::ServerRunner.new 
    runner.converge(described_recipe) 
end 

あなただけのようなものが

filename = 'myFile'  

it 'my resource should write to file' do 
    execute_resouce(:some_resouce).with(filename) 
    expect(::File).to receive(:write).with(filename) 
end 

にそれを言うと言うことができればでしょう本当にクールです。

答えて

1

これは、残念ながら、かなり困難です。私は私のために働く解決策を持っていますが、まだ完全には公開されていません。進行中のクリーンアップはhttps://github.com/poise/poise-specで、私のスタイルのアイデア(https://github.com/poise/poise-service/blob/master/test/spec/resources/poise_service_user_spec.rbなど)を見ることができます。全体的に一番簡単な方法は、今度はtest/cookbook/などのテストフィクスチャの料理本を作って、それにChefSpecを実行するよう指示する小さなレシピを入れておくだけです。

関連する問題