我正在编写一个代码,其中it
块生成一个数组,我喜欢循环它并在同一个描述块中进行一些测试。我尝试将该数组写入文件并访问它,但这些测试在写入之前先执行。我无法在mocha测试之外访问a
,但我想知道是否还有这样做?
it("test",function(done){
a=[1,2,3]
})
a.forEach(function(i){
it("test1",function(done){
console.log(i)
})
})
答案 0 :(得分:1)
这不会起作用吗?
it("test",function(done){
a=[1,2,3]
a.forEach(function(i){
it("test1",function(done){
console.log(i)
})
})
答案 1 :(得分:1)
var x = [];
describe("hello",function () {
it("hello1",function(done){
x = [1,2,3];
describe("hello2",function () {
x.forEach(function(y) {
it("hello2"+y, function (done) {
console.log("the number is " + y)
done()
})
})
})
done()
});
});
答案 2 :(得分:0)
怎么样:
emulator @Nexus72012 -wipe-data -verbose -logcat '*:e *:w' -netfast -no-boot-anim -no-audio -no-window
如果您的测试是异步的,则需要向它们添加describe("My describe", function() {
let a;
it("test1", function() {
a = [1, 2, 3];
});
a.forEach(function(i) {
it("test" + i, function() {
console.log(i);
});
});
});
回调。但是对于使用done
的这个简单示例,没有必要。
- 编辑 -
我认为答案是“不,你不能这样做”。我添加了一些console.log()
语句来查看发生了什么:
console.log
这就是输出:
describe("My describe", function() {
let a = [1, 2];
it("First test", function() {
console.log('First test');
a = [1, 2, 3];
});
a.forEach(function(i) {
console.log(`forEach ${i}`);
it("Dynamic test " + i, function() {
console.log(`Dynamic test ${i}`);
});
});
});
因此,$ mocha
forEach 1
forEach 2
My describe
First test
✓ First test
Dynamic test 1
✓ Dynamic test 1
Dynamic test 2
✓ Dynamic test 2
3 passing (7ms)
正在运行整个mocha
块并在运行任何describe
块之前创建动态测试。在测试开始后,我不知道如何从it
块内部生成更多动态测试。
您的数组创建是否必须位于it
块内?