做单元测试时,相同类型数据得到不同结果,望help~

发布于 2022-09-01 06:49:14 字数 1088 浏览 16 评论 0

写了一个练习,用promise,async,eventproxy处理回调。

流程:通过抓取网站数据,转json格式,写入文件,读取文件。

项目运行正常,文件数据正常读取。结构如下:
QQ20150430-1@2x.png

在做测试的时候,想验证数据是否写入json文件,就用了fs-extra 的同步读数据。

在程序可以正常读取数据的情况下,测试用例无法正常读取数据,测试结果:

QQ20150430-2@2x.png

我很奇怪,如果是我的路径写的有问题,那么应该三个测试用例均无法通过,但是第一个promiseData的用例就可以通过。

测试用例log:

QQ20150430-3@2x.pngQQ20150430-3@2x.png

后来我尝试了readJson()和readJsonSync(),发现结果都是promiseData可以通过,后两个无法通过。

然后我对比了data目录的三个文件的内容,因为我抓取了相同的目标,所以文件内容是肯定相同的,这就郁闷了,不知道是哪里写的有问题,希望大家能指出。

项目地址: callback

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰◇生如夏花灿烂 2022-09-08 06:49:14

我在 github 上克隆了一下楼主的库,然后编写 data.test.js,接着在工程目录下执行了一下 mocha,测试结果是三个测试用例都出现Error: ENOENT, no such file or directory的错误。
cd test 进入 test 目录,执行 mocha data.test.js ,测试可以成功通过。
出现 bug 的原因是 json 文件地址没有写对。因为 nodejs 的 requirefs 根据文件相对路径找文件的相对点不同。
* require:相对于调用require文件本身。
* fs: 相对于执行文件时,执行command(命令)所在的目录。

修改 config 如下,可以成功跑过测试。

var config = {
    promiseData   : './data/promiseData.json',
    asyncData     : './data/asyncData.json',
    eventproxyData: './data/eventproxyData.json'
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文