我正在尝试编写serverspec测试,通过使用厨师、厨房和流浪汉,使用debian jessie框来检查菜谱是否正在设置mariadb服务器。
菜谱很简单:
# cookbooks/mariadb/recipes/server.rb
package 'mariadb-server' do
action :install
end我所写的规范是:
# cookbooks/mariadb/test/integration/default/serverspec/server_spec.rb
require 'spec_helper'
describe 'mariadb::server' do
context package('mariadb-server') do
it 'is installed' do
expect be_installed
end
end
end但是,在运行kitchen verify时,无论包状态如何,这始终返回true。如果我将ssh放入迷航框并移除包,然后运行kitchen verify,我也会得到一个肯定的结果。
即使我将包更改为一些随机字符串,例如context package('this-is-not-a-package') do,测试结果也是正确的。
我在这里做错什么了?
发布于 2016-05-25 17:15:15
在更一般的意义上,这并不是遵循RSpec 3匹配器语法。
你可以考虑这样做:
describe 'mariadb::server' do
describe package('mariadb-server') do
it { expect(subject).to be_installed }
end
end这看起来更干净,并且输出更干净,因为serverspec对RSpec输出使用文档格式化程序。
为了让您进一步了解引擎盖下面发生的事情,您可以了解这里发生了什么,而不是假设这一切都是魔术,下面是如何进行这类检查的一般模板:
describe method(argument) do
it { expect(subject).to be_boolean-matcher.with_chain(argument_two) }
end对于您的情况(您没有使用version链,但我添加了它作为额外的信息)
https://stackoverflow.com/questions/37442483
复制相似问题