Mocha:获取当前测试的循环测试生成名称?

时间:2017-11-12 03:00:55

标签: node.js mocha

此代码有效:我在testTitle函数中使用了变量beforeEach

const list = [
    { title: 'login', uri: '/login', should: 'Login' },
    { title: 'signup', uri: '/signup', should: 'Create'}
];

let testTitle = '';

beforeEach(function() {
    testTitle = this.currentTest.fullTitle();
});

describe('navegation', () => {
    list.forEach(function(item) {
        it(item.title, (done, obj) => {

            // ------------------------------------
            // Not work it
            // console.log(this.test.fullTitle()); 
            // ------------------------------------

            request(server)
                .get(item.uri)
                .expect(constant.STATUS.OK)
                .then(res => {
                    res.text.should.include(item.should);
                    done();
                })
                .catch(err => {
                    console.log(testTitle, err);
                    done(err);
                });
        });
    });
});

问题:

如何直接在循环中改进使用过的this.test.fullTitle()代码,避免使用变量testTitlebeforeEach函数?

1 个答案:

答案 0 :(得分:2)

在个别测试中,您可以访问this.test,因此您可以this.test.title这样:{/ p>

describe('test', function() {
    it('Can read own title', function(done) {
        setTimeout(()=>{
            console.log("title: ", this.test.title)        
            done()            
        }, 100)
    })            
})    
// logs: title:  Can read own title

您需要小心使用箭头函数(()=>{}),因为您无法访问所依赖的this上下文。

例如,不起作用

describe('test', function() {
    it('Can read own title', (done) => {
        setTimeout(()=>{
            console.log("title: ", this.test.title)        
            done()            
        }, 100)
    })            
})    

// Uncaught TypeError: Cannot read property 'title' of undefined