У меня есть следующие классы:
// 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", что означает, что издевательство не произошло ...
Есть идеи?