たとえば、ユーザのテストをする場合、ユーザ数だけテストコードを書くのは面倒なので、ユーザを配列で定義して、同じテストコードをループ処理化します。
以下の例は、Ruby の書式でテストコードにユーザを定義しています。
テストコードはループで処理するようにします。
users = [{:nm => 'user01', :id => 501 }, {:nm => 'user02', :id => 502 }] users.each do |u| describe user( "#{u[:nm]}" ) do it { should exist } it { should have_uid "#{u[:id]}" } end end
以下の例では、YAMLでユーザを定義しています。Serverspec でYAML を使用する方法は、以前の記事を参照にしてください。
YAML は以下のように定義します。
:users: - { :nm: "user01", :id: 501 } - { :nm: "user02", :id: 502 }
YAMLで定義した変数を使用するテストコードは以下のとおり
users = property[:users] users.each do |u| describe user( "#{u[:nm]}" ) do it { should exist } it { should have_uid "#{u[:id]}" } end end
上記とは異なり、単純な配列を使いたい場合は、以下のような書き方になります。
cmds={ 'cmd1' => "ret1", 'cmd2' => "ret2", 'cmd3' => "ret3" } cmds.each do |cmd, value| describe command("#{cmd}") do its(:stdout) { should match /#{value}/ } end end