附加到茉莉花'IT'描述名称



我一直在尝试更改运行时的"IT"描述,知道量角器是异步的,我仍然觉得我错过了一些东西。

describe('Describe something', function() {
    var testParams = [1,2,3,4,5,6,7,8,9,10];
    var testVar;
    beforeEach( function() {
        // ...
        testVar = "Eyooo";
    });
for (var i = 0; i < testParams.length; i++) {
  (function (testSpec) {
    // ...
    it('should do something '+testVar , function () {
    //...
      console.log(testVar);
    });
    // ...
  })(testParams[i]);
};

});

就是这部分我一直有问题

it('should do something '+testVar , function () {

知道情况正在异步处理,我一直有一个艰难的时间试图找出'it'的描述是何时加载的。

当我运行上面的代码时,这是我的输出

Describe something                                                                                                                                              
√ should do something undefined                                                                                                                               
Eyooo                                                                                                                                                             
√ should do something undefined                                                                                                                               
Eyooo 

所以结果有点明显,但我一直很难理解这一点。我想这违反了行业标准,但这对我的案子很有帮助。

我也试过这样做…

it('should do something', function() {    
    testVar = "Eyooo";
});
it('should do something '+testVar, function () {
    //...
    console.log(testVar);     
});

to no avail

欢迎任何输入!

这个问题问得好。必须进行脑力激荡!

你完全找到了错误的根本原因。它是异步的我认为动态构建"IT"块描述的解决方案不是通过BeforeEach()而是调用自定义函数来分配名称

请检查您引用的相同示例,但修改为构建IT描述

describe('Describe something', function() {
    var testParams = [1,2,3,4,5,6,7,8,9,10];
    var testVar;
    for (var i = 0; i < testParams.length; i++) {
        (function (testSpec) {
            // ...
            it(getName(), function () {
                //...
                console.log(testVar);
            });
            // ...
        })(testParams[i]);
    };
    function getName(){
        testVar = "Eyooo";
        return 'should do something '+testVar
    }
});

另一个例子,不是在另一个IT块中编写构建描述的逻辑,而是在另一个自定义函数中构建它并调用它

describe('Describe something', function() {
    var testVar
    it(getName(), function () {
        //...
        console.log(testVar);
    });
    function getName(){
        testVar = "Eyooo";
        return 'should do something '+testVar
    }
});

最新更新