我正在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'
如何忽略/解决此问题?还是有更好的方法在我的项目中做模拟?
谢谢!
答案 0 :(得分:0)
目前,我使用了以下解决方法:
而不是致电Orig.__fake
我正在呼叫Orig['__fake']
。
它不完全是我想要的,但确实有效。