最近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
は必要ってことなのかな?