sum.jsMocking erfordern Aussagen mit Jest
module.exports = function sum(a, b){
return a + b;
};
Thing.js
var sum = require("./sum");
module.exports = class Thing {
add(a, b){
return sum(a, b);
}
}
Thing.test.js
test('1 + 2 = 3',() => {
//Arrange
var Thing = require('./Thing');
var thing = new Thing();
//Act
var result = thing.add(1, 2);
//Assert
expect(result).toBe(3);
});
test('sum mocked',() => {
//Arrange
jest.mock('./sum',() => {
return jest.fn(() => 42);
});
var Thing = require('./Thing');
var thing = new Thing();
//Act
var result = thing.add(1, 2);
//Assert
expect(result).toBe(42);
});
Wie kann ich die Summe spotten 'require' Abhängigkeit beim Testen? Ich erhalte den folgenden Fehler.
sum mocked
expect(received).toBe(expected)
Expected value to be (using ===):
42
Received:
3
Was interessant, wenn ich jeden Test einzeln mit .only laufen, sie arbeiten beide ganz gut auf eigene Faust.
In der Vergangenheit habe ich Proxyquire verwendet, um solche Dinge zu tun, aber ich würde es gerne vermeiden, wenn möglich.