我在Apache APISIX中实现一个特性时编写了测试用例,遇到了一个顽固的错误,与"预期"部分相比,"已获得"部分中有一个额外的换行符。
下面是测试的代码:
=== TEST 8: get value from vault: token env var wrong/missing
--- config
location /t {
content_by_lua_block {
local vault = require("apisix.secret.vault")
local conf = {
prefix = "kv/apisix",
token = "$ENV://VALT_TOKEN",
uri = "http://127.0.0.1:8200"
}
local value, err = vault.get(conf, "/apisix-key/jack/key")
if err then
return ngx.say(err)
end
ngx.print("value")
}
}
--- request
GET /t
--- response_body
failed to decode result, res: {"errors":["permission denied"]}
=== TEST 9: get value from vault: token env var contains wrong token
--- config
location /t {
content_by_lua_block {
local vault = require("apisix.secret.vault")
local conf = {
prefix = "kv/apisix",
token = "$ENV://WRONG_VAULT_TOKEN",
uri = "http://127.0.0.1:8200"
}
local value, err = vault.get(conf, "/apisix-key/jack/key")
if err then
return ngx.say(err)
end
ngx.print("value")
}
}
--- request
GET /t
--- response_body
failed to decode result, res: {"errors":["permission denied"]}
我尝试在预期部分的末尾添加"\n",如下所示:
--- response_body
failed to decode result, res: {"errors":["permission denied"]}\n
但是这不起作用,所以我试着用引号"..."
把"expected"部分括起来,这样换行符就包括在内了,但也不起作用。
另一种方法是通过编写一些代码来删除"get"部分的换行符,但我认为这不是一个理想的做法(修改响应)。
提前感谢!!
下面是工作流操作运行的link。
1条答案
按热度按时间wfsdck301#
这很简单!我不知道我们可以用正则表达式来匹配"得到"和"期望"。这就是我是怎么做的。
我替换了这个:
用这个:
我们的想法是使用
response_body_like
构造来使用正则表达式进行表达式匹配,这要感谢this blog。