【问题标题】:How to suppress Jest Linter errors from import files?如何抑制导入文件中的 Jest Linter 错误?
【发布时间】:2020-11-20 15:09:08
【问题描述】:

所以我试图通过从 handler.ts 导入一个函数来使用 Jest 进行一些基本的 API 测试,但是 Jest 爬过处理程序 ts 导入并给我处理程序从我的 libs 文件夹中导入的文件的 linter 错误。想要做的是检查该函数的结果是否等于我希望它等于的结果。

这是我的测试文件test/handler.test.ts:

import { getInbox } from './../handler'
import * as myMongo from '../../../libs/mongo';
import { Db } from 'mongodb';

const productionDbPromise: Promise<Db> = myMongo.getProductionDb();

test("Case page 1, limit 5", async ()=>{
    const page = 1;
    const limit = 5;
    const event = {
        queryStringParameters: {
            page: page,
            limit: limit
        }
    };
    const productionDb = await productionDbPromise;
    const seekerCollection = productionDb.collection('seekers');
    const totalDocs = await seekerCollection.countDocuments({ lastMessageDate: { $ne: null } });
    const code = 200;
    const status = 'OK';
    const res: any = await getInbox(event);
    expect(res.code).toEqual(code);
    expect(res.status).toEqual(status);
    expect(res.json().totalDocs).toEqual(totalDocs);
    expect(res.json().seekers.length).toEqual(limit);
});

这是错误:

Test suite failed to run

    TypeError: twilio is not a function

      6 | export const client = twilio(accountSid, authToken);
      7 | export const messagingServiceSid = process.env.TWILIO_SERVICE_ID;
    > 8 | 
        | ^

      at Object.<anonymous> (../../libs/twilio.ts:8:18)
      at Object.<anonymous> (../../libs/message.ts:7:18)
      at Object.<anonymous> (handler.ts:14:19)
      at Object.<anonymous> (__test__/handler.test.ts:4:19)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        12.086 s
npm ERR! Test failed.  See above for more details.

知道如何让它忽略这个吗? (顺便说一下,我正在测试的函数甚至不使用该库文件中的任何导出,并且 twilio 对象已正确导入该文件的第一行)

【问题讨论】:

    标签: node.js typescript testing jestjs ts-jest


    【解决方案1】:

    运行 linter 不是 Jest 的责任,它也不会爬过任何未明确导入的模块。

    这不是 linter 而是运行时错误,它不能被抑制或丢弃。问题正是它所说的:

    TypeError: twilio is not a function
    

    调用堆栈很好地说明了它的来源:

      at Object.<anonymous> (../../libs/twilio.ts:8:18)
      at Object.<anonymous> (../../libs/message.ts:7:18)
      at Object.<anonymous> (handler.ts:14:19)
      at Object.<anonymous> (__test__/handler.test.ts:4:19)
    

    handler.ts 依赖于 message.ts,message.ts 依赖于错误发生的 twilio.ts。如果twilio 不应该在测试中可用,则需要模拟它或其中一个模块。

    【讨论】:

      猜你喜欢
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2020-08-28
      • 2017-03-02
      • 2021-05-07
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多