Для дополнительного ведения журнала мне нужно иметь возможность распечатать текущее описание теста.
Как я могу это сделать (с Mocha BDD)?
Для дополнительного ведения журнала мне нужно иметь возможность распечатать текущее описание теста.
Как я могу это сделать (с Mocha BDD)?
Здесь вы идете:
console.log(this.title);
Если вы находитесь непосредственно внутри обратного вызова describe
, вы можете использовать this.title
для заголовка describe
или this.fullTitle()
, чтобы получить иерархическое название describe
(названия предков + заголовок из этого). Если вы находитесь в обратном вызове it
, вы можете использовать this.test.title
или this.test.fullTitle()
соответственно. Итак:
describe("top", function() {
console.log(this.title);
console.log(this.fullTitle());
it("test", function () {
console.log(this.test.title);
console.log(this.test.fullTitle());
});
});
Выводные выражения console.log
будут выводить:
top
top
test
top test
Вот более полный пример, показывающий, как названия изменяются в зависимости от вложенности:
function dump () {
console.log("running: (fullTitle)", this.test.fullTitle(), "(title)",
this.test.title);
}
function directDump() {
console.log("running (direct): (fullTitle)", this.fullTitle(), "(title)",
this.title);
}
describe("top", function () {
directDump.call(this);
it("test 1", dump);
it("test 2", dump);
describe("level 1", function () {
directDump.call(this);
it("test 1", dump);
it("test 2", dump);
});
});
Операторы console.log
выводят:
running (direct): (fullTitle) top (title) top
running (direct): (fullTitle) top level 1 (title) level 1
running: (fullTitle) top test 1 (title) test 1
running: (fullTitle) top test 2 (title) test 2
running: (fullTitle) top level 1 test 1 (title) test 1
running: (fullTitle) top level 1 test 2 (title) test 2
Внутри beforeEach
попробуйте this.currentTest.title
.
Пример:
beforeEach(function(){
console.log(this.currentTest.title);
})
Использование Mocha 3.4.1
.
Для мокко "^ 5.1.0" вы можете использовать console.log(this.ctx.test.title);
Внутри любого метода тестирования
it('test method name'), function() { var testName= this.test.title; }
и вы можете использовать:
afterEach(function(){
console.log(this.currentTest.title); //displays test title for each test method
});