最近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流して...、とやっていると、
ChefSpecとServerspecで記載内容がかなり被るのもあり、ChefSpecを記載するのが億劫。というかほとんどServerspecしか書いていません、すみません。
単体テスト用のVagrantfileと結合テスト用のVagrantfileを用意して、
・単体テスト
Vagrantから1つのレシピとそれに対応するServerspecのみ実行。
・結合テスト
Vagrantから複数のレシピを組合せて実行し、Serverspecでテストする。テストコードは単体テスト用のServerspecを使いまわしつつ、結合独自のテスト観点を追加する。
みたいな開発でもいいんかなあ。
いちいち仮想マシンを起動してテストすると遅いから、CIすることを考えるとChefSpecは必要ってことなのかな?