此代码有效:我在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()
代码,避免使用变量testTitle
和beforeEach
函数?
答案 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