我正在测试一个由react-query支持的自定义钩子。我需要测试当承诺被拒绝时它的回滚行为。不幸的是,react-query使用console.error将被拒绝的承诺记录到控制台,这会弄脏我的测试输出。我如何防止react-query将被拒绝的承诺记录为控制台错误?
react-query
console.error
7cwmlq891#
react-query有一个名为setLogger的方法(以前称为setConsole),您可以使用它来实现这一点。要静音来自react-query的所有控制台消息:
setLogger
setConsole
setLogger({ log: () => {}, warn: () => {}, error: () => {}, });
要再次取消静音react-query:
setLogger(window.console);
如果您只想静音某些电平而不想静音其他电平,您可以通过设置空函数和window.console函数的任意组合来实现。例如:
window.console
setLogger({ log: () => {}, warn: window.console.warn, error: window.console.error, });
如果您只想在一个测试中禁用记录器,那么可以在测试的开始和结束时进行这些调用。如果您希望对整个测试文件禁用记录器,可以使用Jest的setup and teardown methods:
beforeAll(() => { setLogger({ log: () => {}, warn: () => {}, error: () => {}, }); }); afterAll(() => { setLogger(window.console); });
如果您希望对套件中的所有测试禁用logger,您可以将调用添加到测试设置文件(例如,名为testSetup.js),然后将以下内容添加到jest配置中:
testSetup.js
setupFilesAfterEnv: ['<rootDir>/testSetup.js'],
我个人创建了一个助手函数,用于我的测试(TypeScript):
export async function withMutedReactQueryLogger( func: () => Promise<any> ): Promise<any> { const noop = () => { // do nothing }; setLogger({ log: noop, warn: noop, error: noop, }); const result = await func(); setLogger(window.console); return result; }
我是这样使用它的:
test('test something', async () => { await withMutedReactQueryLogger(async () => { // write my test here }) })
smdncfj32#
作为Nathan Arthur answer,React查询版本4(TanStack查询版本4)。setLogger函数已删除。了解更多信息。它将改为在QueryClient选项内配置。
QueryClient
const queryClient = new QueryClient({ logger: { log: (...args) => { // Log debugging information }, warn: (...args) => { // Log warning }, error: (...args) => { // Log error }, }, })
参考:
2条答案
按热度按时间7cwmlq891#
react-query
有一个名为setLogger
的方法(以前称为setConsole
),您可以使用它来实现这一点。要静音来自
react-query
的所有控制台消息:要再次取消静音
react-query
:如果您只想静音某些电平而不想静音其他电平,您可以通过设置空函数和
window.console
函数的任意组合来实现。例如:如果您只想在一个测试中禁用记录器,那么可以在测试的开始和结束时进行这些调用。
如果您希望对整个测试文件禁用记录器,可以使用Jest的setup and teardown methods:
如果您希望对套件中的所有测试禁用logger,您可以将调用添加到测试设置文件(例如,名为
testSetup.js
),然后将以下内容添加到jest配置中:我个人创建了一个助手函数,用于我的测试(TypeScript):
我是这样使用它的:
smdncfj32#
作为Nathan Arthur answer,
React查询版本4(TanStack查询版本4)。
setLogger
函数已删除。了解更多信息。它将改为在
QueryClient
选项内配置。参考: