Тестирование метода, вызывающего другой с помощью rewiremock - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующие классы:

// class1.ts

import { Class2 } from './class2';

export class Class1 {
    private _class2 = new Class2();
    a: number = 0;
    b: number = 0;

    constructor(a?: number, b?: number) {
        if (a) {
            this.a = a;
        }

        if (b) {
            this.b = b;
        }
    }

    sumAll() {
        let c: number = 4;

        let partialSum = this._class2.sum(this.a, this.b);

        let result = c + partialSum;

        return result;
    }
}

И:

// class2.ts

export class Class2 {
    sum(a: number, b:number) {
        return a+b;
    }
}

Я хочу написать модульный тест для метода в Class1, но смоделировать вызов Class2 ... Мне нужно получить это, используя пакет rewiremock ...

До сих пор я пытался:

const assert = require('assert');
const rewiremock = require('rewiremock/node');

const class1 = require('./class1');

describe('something', () => {
    describe('Methods from BL2', () => {
        it('...', async () => {

            rewiremock(() => require('./class1'), () => {
                rewiremock(() => require('./class2'))
                    .with({ 'sum': () => 5 })
            });

            rewiremock.enable();

            let cls1 = new class1.Class1(1, 1);

            let result = cls1.sumAll();

            rewiremock.disable();

            assert.deepStrictEqual(result, 9);
        });
    });
});

Но вместо того, чтобы получить "9", я получить "6", что означает, что издевательство не произошло ...

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...