【发布时间】:2017-06-23 15:45:56
【问题描述】:
我正在编写一本包含自定义资源的食谱,该资源(除其他外)通过ssh-keygen 验证 SSH 密钥。我需要测试用户输入无效输入和资源应该引发异常的场景,所以我正在寻找一种方法来验证“给定以下输入......厨师运行失败”。
如果我正确理解所有内容,Test Kitchen 意味着每次收敛都会成功,而 ChefSpec 意味着资源永远不会真正执行(因此我的 ssh-keygen 调用将永远不会被调用)。
是否有任何常规方法来测试这种情况?
【问题讨论】:
-
是的,像任何其他库一样模拟 shellout 调用,如 ChefSpec 自述文件中的 here 所述。并期望它引发异常,这应该匹配整个事情。
-
应该把这个复制到一个答案:)
-
@Tensibai 实际问题不是嘲笑,我想我在谈论食谱内部时过于精确。我需要测试我的资源是否按预期响应来自 ssh-keygen 的不同响应,但 ChefSpec 没有执行我的资源 - 据我了解,这是 ChefSpec 的唯一模式。所以实际上我可以测试我的资源在某处被调用,可以测试
only_if/not_if守卫,但不能测试资源行为本身。 -
是自定义资源吗?
-
那你需要告诉chefspec到step_into这个自定义资源
标签: chef-infra test-kitchen chefspec