Jest Mock + Typescript错误TS2339

时间:2018-04-01 11:54:04

标签: typescript express jest

我正在Express中构建typescript服务器,我想使用jest作为我的测试框架。

根据例子,我在网上看到,如果我想模拟以下类方法:

// src/orig.ts
export class Orig {
    static testFunc() {
        return 'orig';
    }
}

我需要创建以下文件:

// src/__mocks__/orig.ts
export class Orig {
    static __fake: string = 'fake';
    static testFunc() {
        return Orig.__fake;
    }
}

app.js看起来像这样:

const app = require('express')();
const { Orig } = require('./src/Orig');

app.get('/', (req, res) => { res.send(Orig.testFunc()); });

module.exports = app.listen(3000);

我的测试文件应如下所示:

// tests/test.ts
const request = require('supertest');
const app = require('../app');

import { Orig } from '../src/Orig';

jest.mock('../src/Orig');

describe('Test the mock', () => {
    test('It should return the fake string', () => {
        Orig.__fake = 'a fake string';
        return request(app).get('/').then(response => {
            expect(response.statusCode).toBe(200);
            expect(response.body).toEqual('a fake string');
        });
    });
});

我的问题是我收到以下错误:

error TS2339: Property '__fake' does not exist on type 'typeof Orig'

如何忽略/解决此问题?还是有更好的方法在我的项目中做模拟?

谢谢!

1 个答案:

答案 0 :(得分:0)

目前,我使用了以下解决方法: 而不是致电Orig.__fake我正在呼叫Orig['__fake']。 它不完全是我想要的,但确实有效。