Edited at

Serverspecのメモ・疑問点

More than 5 years have passed since last update.

最近ChefとServerspecを始めたので、備忘録としてメモを記載。Rubyも初心者です。


解決済み


実行時の警告

describe file("/etc/yum.repos.d/epel.repo") do

its(:content) { should match /enabled=1/ }
end

など、ファイルの中身を検証しようとすると

.CommandResult#[] is obsolete. Use accessors instead. in C:/Users/hogehoge/.vagrant.d/gems/gems/serverspec-0.12.0/lib/serverspec/type/file.rb:80:in `content'.

と警告が表示される。

(2014/03/30 追記)

serverspecのバージョンが0.12.0と古かったことが原因でした。

Vagrantのプラグインvagrant-serverspec(0.0.1)をインストールした際に一緒にインストールされるserverspecが古かったようです。

ご指摘ありがとうございました。


packageの提供しているbe_installed.byの種類

 serverspecというよりもspecinfraの話ですが、be_installed.byに指定できる引数の種類についてメモ。

 specinfra-1.0.1で確認。


  • gem

  • npm

  • pecl

  • pear

  • pip

  • cpan

 be_installed.by('bundle')とか書いても動きませんよ。(自戒)


悩み


ChefSpecとServerspec

ChefSpecを単体テスト、Serverspecを結合テストと捉えると、両方記載しないといけないんだろうけど、

Vagrantで仮想マシンを立ててchef_solo流してServerspec流して...、とやっていると、

ChefSpecServerspecで記載内容がかなり被るのもあり、ChefSpecを記載するのが億劫。というかほとんどServerspecしか書いていません、すみません。

単体テスト用のVagrantfileと結合テスト用のVagrantfileを用意して、

・単体テスト

Vagrantから1つのレシピとそれに対応するServerspecのみ実行。

・結合テスト

Vagrantから複数のレシピを組合せて実行し、Serverspecでテストする。テストコードは単体テスト用のServerspecを使いまわしつつ、結合独自のテスト観点を追加する。

みたいな開発でもいいんかなあ。

いちいち仮想マシンを起動してテストすると遅いから、CIすることを考えるとChefSpecは必要ってことなのかな?