gpt4 book ai didi

javascript - Travis-CI Node 构建随机失败

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:07 25 4
gpt4 key购买 nike

我有一个问题 node module所有测试都在本地、其他盒子和 Travis-CI 上运行,但有时,不是由于超时,一个测试在 Travis-CI 上失败。 。至少在我看来,测试是确定性的,所以它不应该随机失败。

我已将问题追溯到这部分:

function record(rec_options) {

// Originaly the parameter was a dont_print boolean flag.
// To keep the existing code compatible we take that case into account.
var typeof_rec_options = typeof(rec_options);
var dont_print = (typeof_rec_options === 'boolean' && rec_options)
|| (typeof_rec_options === 'object' && rec_options.dont_print);
var output_objects = typeof_rec_options === 'object' && rec_options.output_objects;

...

var out = !output_objects ?
generateRequestAndResponse(body, options, res, datas) :
generateRequestAndResponseObject(body, options, res, datas);

对于 rec_options 的值为 { dont_print: true, output_objects: true }var output_objects 被评估(同样只有 有时)为false,因此该函数输出字符串,而不是测试正确失败的对象。标志评估失败的证明可以在 this build 中看到它转储字符串而不是对象(我还进行了一个测试,以确保每当指定 output_objects 时返回的值都是一个对象,并且也会失败显示 string 其中 >object 是预期的)。

根据我的说法,这种情况永远不会发生,并且 output_objects 的定义不是含糊的,当然也不是随机的。然而,这正是一次又一次发生的事情。

我做错了什么?

最佳答案

问题出在一个单元测试中,该测试没有等待其异步调用在完成之前完成。然后,根据时间安排,这会干扰其他测试的执行。这对于有问题的 Node 模块 ( nock ) 来说是非常具体的,因为它模拟 HTTP/HTTPS 请求,因此后续测试有时会捕获来自错误测试的异步请求。

关于javascript - Travis-CI Node 构建随机失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com