Насмешливый метод класса es6 - PullRequest
0 голосов
/ 11 февраля 2019

Я тестирую приложение Express, и у меня есть следующие файлы:

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)
    });
}); 

Что я пытаюсь сделатьЭто макет метода register в CompanyController и измените реализацию так, чтобы он возвращал код состояния 200, но я получаю ошибку:

TypeError: _CompanyController.default.mockImplementation не является функцией

Как мне правильно это реализовать?

1 Ответ

0 голосов
/ 11 февраля 2019

Если вы хотите использовать mockImplementation, вам нужно было сказать Jest, что CompanyController необходимо смоделировать (как описано здесь ):

import CompanyController from './CompanyController';
jest.mock('./CompanyController'); // you miss this line
const mockComp = jest.fn();
CompanyController.mockImplementation(()=>{
    return {
        register:mockComp
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...