[英]How to turn off app.use(express.static('/public')); Express js
[英]How to test an Express application when using app.use(express.static('public'));
我无法模拟 app.use(express.static('public')); 在我添加这一行之前,我的所有测试都有效。我以前使用相同的方法测试了快速服务器,但是,这是我第一次使用这个 express.static 命令。
在我添加这行代码后,我现在在我的测试中得到这个错误 -
TypeError: _express.default.static is not a function
如果我删除该行,我所有的测试都会通过
app.use(express.static('public'));
但是,我需要这条线,因为我在其他地方的应用程序中提供了一些静态图像。
我已经模拟了 Express,如下面的代码所示,但是,express 是一个返回对象的函数,然后它用于模拟 get()、use() 和 listen() 调用。
现在我已经添加了 express.static('public') 看起来 express 现在也是一个静态对象。
所以我需要调整
jest.mock('express', () => ....
部分?
只是不知道如何模拟这一行 - app.use(express.static('public'));
Express - Server.js 文件
const start = () => {
const port = process.env.port || 7000;
const app = express();
app.use(bodyParser.json());
app.use(cors());
app.use(express.static('public'));
...
}
Test - Server.test.js File
jest.mock('express', () =>
jest.fn(() => ({
get: jest.fn(),
use: jest.fn(),
listen: jest.fn()
}))
);
jest.mock('body-parser', () => ({
json: jest.fn()
}));
jest.mock('cors');
describe('app set up correctly ', () => {
beforeEach(() => {
jest.clearAllMocks();
server.start();
});
it('should initialise express server', () => {
expect(express).toHaveBeenCalled();
});
我希望修改模拟调用以模拟静态调用,这样我就不会再收到此错误 TypeError: _express.default.static is not a function 而我的其他测试按预期通过
任何人都可以提供的任何帮助都非常感谢。
这应该模拟express.static
方法:
jest.mock('express', () => {
const mockedExpress = () => {
return {
get: jest.fn(),
use: jest.fn(),
listen: jest.fn(),
}
};
Object.defineProperty(mockedExpress, "static", { value: jest.fn() });
return mockedExpress;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.