gpt4 book ai didi

node.js - 两次运行相同测试时 Jasmine 库 "no specs found"

转载 作者:搜寻专家 更新时间:2023-10-31 23:50:46 24 4
gpt4 key购买 nike

我希望能够从 Node Express 服务器运行相同的测试两次,但注意到相同测试的第二次运行总是给出“未找到规范”。

这是一个例子: Jasmine 测试.js:

function jasmineExecute(fileName) {
var jasmine = new Jasmine({});
jasmine.onComplete(function(x) {
if (x) {
jasmineExecute("./test.js"); // risk of infinite loop
}
else {
console.log('Test failed : ' + fileName);
}
});
jasmine.execute([
fileName
]);
}
jasmineExecute("./test.js");

测试.js :

describe("We test that ", function() {
it("The return should be true", function() {
expect(true).toBe(true);
});
});

我得到的结果如下:

Randomized with seed 03122
Started
.


1 spec, 0 failures
Finished in 0.006 seconds
Randomized with seed 03122 (jasmine --random=true --seed=03122)
Randomized with seed 51883
Started


No specs found
Finished in 0.005 seconds
Incomplete: No specs found
Randomized with seed 51883 (jasmine --random=true --seed=51883)
Test failed : ./test.js

我在 Jasmine 5.6.0 和 Node 8.9.4 上运行。欢迎任何帮助。

最佳答案

这实际上是 jasmine 包的一个已知(尽管很难找到)问题:

https://github.com/jasmine/jasmine-npm/issues/30

要点是 Jasmine uses require()加载您的规范文件,并且因为 Node.JS 只会在每个“ session ”中加载一次模块,您的规范文件不会重新执行,因此不会调用 describe()/it()。

如果你只有一个规范文件,你可以通过使用 decache 从缓存中删除模块来解决这个问题。包裹:

const Jasmine = require("jasmine")
const decache = require("decache")

function jasmineExecute(fileName) {
var jasmine = new Jasmine({});
jasmine.onComplete(function(x) {
if (x) {
decache("./test.js")
jasmineExecute("./test.js"); // risk of infinite loop
}
else {
console.log('Test failed : ' + fileName);
}
});
jasmine.execute([
fileName
]);
}
jasmineExecute("./test.js");

关于node.js - 两次运行相同测试时 Jasmine 库 "no specs found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49995731/

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