首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serverspec包检查总是返回true

Serverspec包检查总是返回true
EN

Stack Overflow用户
提问于 2016-05-25 16:08:09
回答 1查看 143关注 0票数 1

我正在尝试编写serverspec测试,通过使用厨师、厨房和流浪汉,使用debian jessie框来检查菜谱是否正在设置mariadb服务器。

菜谱很简单:

代码语言:javascript
复制
# cookbooks/mariadb/recipes/server.rb
package 'mariadb-server' do
  action :install
end

我所写的规范是:

代码语言:javascript
复制
# 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,测试结果也是正确的。

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 17:15:15

在更一般的意义上,这并不是遵循RSpec 3匹配器语法。

你可以考虑这样做:

代码语言:javascript
复制
describe 'mariadb::server' do
  describe package('mariadb-server') do
    it { expect(subject).to be_installed }
  end
end

这看起来更干净,并且输出更干净,因为serverspec对RSpec输出使用文档格式化程序。

为了让您进一步了解引擎盖下面发生的事情,您可以了解这里发生了什么,而不是假设这一切都是魔术,下面是如何进行这类检查的一般模板:

代码语言:javascript
复制
describe method(argument) do
  it { expect(subject).to be_boolean-matcher.with_chain(argument_two) }
end

对于您的情况(您没有使用version链,但我添加了它作为额外的信息)

  • 方法:包装
  • 论点: mariadb-server
  • 主题:将解析为包(mariadb-server)
  • 布尔匹配器:已安装
  • 链:版本
  • argument_two: 1.2.3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37442483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档