【问题标题】:Mocking es6 class method模拟 es6 类方法
【发布时间】:2019-02-11 16:50:39
【问题描述】:

我正在测试一个快递应用,我有以下文件:

app.js

const express = require('express');
const path = require('path');

const apiRouter   = require('./api');

const app = express();       
app.use('/api',apiRouter);


module.exports = app;

api.js

const Router = require( 'express').Router;
const CompanyController =require( './CompanyController');

const router = Router();

router.route('/company/registration').post(CompanyController.register);

module.exports=router;

CompanyController.js

class CompanyRegistration {
    constructor() {}


    static async register(req, res) {
        //some implementations
       //if successfull returns status code 200 or 422 if cant process

} 

registration.js

import Request from 'supertest';
import app from   './app';
import CompanyController from './CompanyController';

const mockComp = jest.fn();
CompanyController.mockImplementation(()=>{
    return {
        register:mockComp
    }
});


it("should work",()=>{


    return Request(app).post("/api/company/registration").then(response => {
        expect(response.statusCode).toBe(200)
    });
}); 

我试图做的是模拟 CompanyController 中的 register 方法并更改实现,使其返回状态代码 200,但我收到错误:

TypeError: _CompanyController.default.mockImplementation 不是 功能

如何以正确的方式实现这一点?

【问题讨论】:

    标签: node.js unit-testing express jestjs


    【解决方案1】:

    如果你想使用mockImplementation,你需要告诉Jest CompanyController 需要被模拟(如here 所述):

    import CompanyController from './CompanyController';
    jest.mock('./CompanyController'); // you miss this line
    const mockComp = jest.fn();
    CompanyController.mockImplementation(()=>{
        return {
            register:mockComp
        }
    });
    

    【讨论】:

    • 我收到错误超时 - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调。 edding jest.mock('./CompanyController');
    • 我检查了有关增加超时的其他解决方案,但即使我增加超时它也没有。它给了我相同的错误超时
    猜你喜欢
    • 2022-11-07
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2021-03-31
    • 2018-05-04
    • 2018-03-12
    • 2011-02-17
    相关资源
    最近更新 更多