Как увидеть вывод `console.log` при запуске тестов Jasmine - PullRequest
0 голосов
/ 22 января 2019

Я разработал модуль Node.js и использую Jasmine для написания для него модульных тестов.Модуль использует console.log для вывода некоторой информации, поскольку он выполняется при вызове с аргументом verbose, установленным в true.

Допустим, модуль выглядит следующим образом:

foo.js

function foo(arg1, verbose){
    var output = "Hello " + arg1;
    if(verbose)console.log("Returning %s", output);
    return output;
}
module.exports = foo;

Допустим, мой тест выглядит следующим образом:

foo-spec.js

const foo = require("path/to/foo")
describe("Foo suite", () => {

    it( "Expect foo to greet", () => {
        expect(foo("World", true)).toBe("Hello World");
    });
});

Я запускаю свои тесты, набирая jasmine в терминале:

$ jasmine

Все работает хорошо, за исключением того, что я хотел бы увидеть подробный вывод.

$ jasmine
Returning Hello World

Есть ли способ заставить Жасмин сделать это?

1 Ответ

0 голосов
/ 23 января 2019

Хорошо, я нашел способ обойти это. Шпионил за console.log как-то залатал.

Foo-spec.js

const foo = require("path/to/foo")
describe("Foo suite", () => {

    //This makes the log visible again from the command line.
    spyOn(console, 'log').and.callThrough();

    it( "Expect foo to greet", () => {
        expect(foo("World", true)).toBe("Hello World");
    });
});

Не знаю почему, но spyOn снова делает журналы видимыми. Хотя я на самом деле ничего не делаю с этим, кроме вызова callThrough. Мое лучшее предположение состоит в том, что при этом console.log фактически вызывается из процесса Жасмин.

...