惩戒ES6类方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了惩戒ES6类方法相关的知识,希望对你有一定的参考价值。

我测试的明确应用程序,我有以下文件:

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寄存器方法和改变实现,使其返回200状态码,但我得到的错误:

类型错误:_CompanyController.default.mockImplementation不是一个函数

如何实现这一正确的方法是什么?

答案

如果你想使用mockImplementation你需要告诉玩笑说CompanyController需要被嘲笑(如描述here):

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

以上是关于惩戒ES6类方法的主要内容,如果未能解决你的问题,请参考以下文章

传统的类定义和ES6的类定义

JavaScript ES6 类是不是可用于异步代码库?

30秒就能看懂的JavaScript 代码片段

vue2.0 代码功能片段

es6从零学习:Class的基本用法

如何使用私有方法正确配置 ES6 类的 eslint?