节点单元测试以验证响应主体是否为base64

时间:2017-09-20 16:05:46

标签: node.js unit-testing base64

我有一个以base64格式返回图像的服务。我想为此编写一些单元测试,显然希望进一步statusCode === 200

我看过这篇文章似乎接近我想要的正则表达式How to check whether the string is base64 encoded or not,但它只有在我删除以下内容时才会匹配:

"data:image/jpeg;base64,/9j"

这就是我的回答:

{
    "statusCode": 200,
    "headers": {
        "Content-Type": "image/jpeg"
    },
    "body": "data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQY.........
}

如果我对此进行了测试,请告诉我一个更好的解决方案。

2 个答案:

答案 0 :(得分:1)

另一种选择可能是使用与答案中概述的相反的方法:

可以将图像测试映射到您自己生成的Base64编码,然后您可以从服务器请求图像并根据您自己生成的base64编码进行断言。

https://en.wikipedia.org/wiki/Oracle_%28software_testing%29

这应简化您的测试逻辑,因为您知道如果返回的base64与您的oracle base64匹配,则它符合图像大小

答案 1 :(得分:0)

实际上,我不打算使用正则表达式,而是执行以下操作:

1:从标题中删除base64。

2:将编码后的字符串写入测试文件

3:使用https://github.com/image-size/image-size验证图片尺寸符合预期。

这似乎是一个更加可靠的测试策略。