我有一个以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.........
}
如果我对此进行了测试,请告诉我一个更好的解决方案。
答案 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验证图片尺寸符合预期。
这似乎是一个更加可靠的测试策略。