هل تريد طلب ميزة أو الإبلاغ عن خطأ ؟
خاصية
ما هو السلوك الحالي؟
بسبب BufferedConsole
، من المستحيل الكتابة فوق console.error
، console.log
، console.warn
و console.info
.
حالة الاستخدام: نود أن نكون قادرين على الحصول على أخطاء رمزية واختبارات فاشلة console.error
و console.warn
.
إذا كان السلوك الحالي عبارة عن خطأ ، فالرجاء تقديم خطوات إعادة الإنتاج وإما عرض تجريبي من خلال https://repl.it/languages/jest أو الحد الأدنى من المستودع على GitHub حيث يمكننا yarn install
و yarn test
.
ما هو السلوك المتوقع؟
أتوقع أنه إذا أضفت console.error = (message) => { throw new Error(message); };
(عالميًا ، في اختبار ، أو في setupFiles / setupFramework) ، فإنه في أي وقت يتم استدعاء console.error
في الاختبار ، فإنه سيؤدي إلى خطأ ويفشل في الاختبار.
في الواقع ، لا شيء يحدث.
يرجى تقديم تكوين Jest الدقيق الخاص بك وذكر إصدار Jest والعقدة والغزل / npm ونظام التشغيل لديك.
غير متاح
استخدم وظيفة المحاكاة jest.fn()
:
console.warn = jest.fn(warn => {
throw new Error(warn);
});
thymikee هذا لا يعمل كما هو متوقع أيضًا ، باستخدام ملف إعداد عام:
في "setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"
beforeEach(() => {
console.error = jest.fn((error) => {
throw new Error(error);
});
});
في الاختبار:
const somePromiseThatLogsConsoleError = () => {
return new Promise((resolve, reject) => {
console.error('foobar');
resolve();
});
});
it('test that has console.error', () => {
return somePromiseThatLogsConsoleError().then(() => {
expect(false).toBeTrue();
});
});
أنا فقط حاولت ذلك وأنه يعمل:
// test file
test('lol', () => {
return new Promise((resolve) => {
console.log('lol');
resolve();
});
});
// setup file
global.console.log = () => {
throw new Error('hey!');
};
نتيجة:
__tests__/test-test.js
✕ lol (3ms)
● lol
hey!
at CustomConsole.Object.<anonymous>.global.console.log (setup.js:2:9)
at resolve (__tests__/test-test.js:3:13)
at Object.<anonymous>.test (__tests__/test-test.js:2:10)
at process._tickCallback (internal/process/next_tick.js:109:7)
Test Summary
› Ran all tests.
› 1 test failed, 0 tests passed (1 total in 1 test suite, run time 0.661s)
التعليق الأكثر فائدة
استخدم وظيفة المحاكاة
jest.fn()
: