我正在根据请求进行开玩笑的测试
this.funcao()
这很奇怪,因为在终端中,开玩笑在输出中显示了console.log行:
describe("GET /user ", () => {
test("It should respond with a array of users", done => {
return request(url, (err, res, body) => {
if (err) {
console.log(err)
} else {
console.log("GET on " + url);
body = JSON.parse(body);
expect(body.length).toBeGreaterThan(0);
done();
}
})
})
});
我需要隐藏行
> jest --detectOpenHandles
PASS test/modules/user.test.js
GET /user
√ It should respond with a array of users (1174ms)
console.log test/modules/user.test.js:18
GET on https://xpto/api/user
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 5.79s
Ran all test suites.
答案 0 :(得分:2)
如果这是您编写的测试,为什么还要记录错误?您可以为此依赖开玩笑的断言。
如果没有其他解决方案,则可以像下面这样存根console.log
函数:
const log = console.log;
console.log = () => {};
/** Test logic goes here **/
console.log = log; // Return things to normal so other tests aren't affected.
答案 1 :(得分:2)
您可以使用jest.spyOn模拟console
方法:
const spy = jest.spyOn(console,'warn').mockReturnValue()
// after you are done with the test, restore the console
spy.mockRestore()
您可以创建一个实用程序函数来模拟console
:
function mockConsole(method = 'warn', value){
return jest.spyOn(console,method).mockReturnValue(value).mockRestore
}
const restore = mockConsole() //mock it
// later when you are done
restore() // unmock it
此外,您可以将以上代码答案与jest.beforeEach结合使用,以自动恢复console
:
beforeEach(()=>{
// beware that this will restore all mocks, not just the console mock
jest.restoreAllMocks()
})
答案 2 :(得分:1)
您需要使用process.stdout.write
创建自己的日志功能,或使用它代替console.log
,因为在所有控制台功能中都存在玩笑。
很早以前,我一直在尝试将TypeType一个我真正喜欢的实用程序带入Typescript;测试中的GivenWhenThen
注释和我遇到了与您相同的问题。我不明白为什么jest
打印这些“ consol.log +行”,这没有意义,因为您可以使用Crt + Find轻松找到它们,并且没有选项可以使用--silent将其关闭和--verbose = false选项(当然,静默功能将起作用,但它将删除所有日志,这有什么用)。
最后,我想到了:
const colors = require('colors');
const testLog = (str : string) => process.stdout.write(str)
export const Given = (givenMsg: string) => testLog(`\n+ Given ${givenMsg}\n`)
export const When = (whenMsg: string) => testLog(`+ When ${whenMsg}\n`)
export const Then = (thenMsg: string) => testLog(`+ Then ${thenMsg}\n`)
export const And = (andMsg: string) => testLog(`- And ${andMsg}\n`)
export const testCase = (description: string, testFunction: Function) => it (description, () => {
testLog(colors.yellow(`\n\nTest: ${description}\n`))
testFunction()
testLog('\n')
})
看起来像这样:
答案 3 :(得分:1)
您可以尝试使用-silent 参数来开玩笑。
在package.json中,使用两个脚本:
python
答案 4 :(得分:0)
您可以像这样用“普通”控制台替换 Jest 的 console
实现:
const jestConsole = console;
beforeEach(() => {
global.console = require('console');
});
afterEach(() => {
global.console = jestConsole;
});