【发布时间】:2020-11-02 01:33:54
【问题描述】:
假设我有一个测试文件foo.test.ts,看起来像这样:
describe("foo", function() {
let myMock;
beforeAll(function() {
myMock = jest.spyOn(someObject, "someMethod");
});
test("my test", function() {
beforeEach(function() {
myMock.mockReturnValue("someValue");
});
...
});
afterAll(function() {
myMock.mockRestore();
});
});
我使用这种模式是因为我在其他 StackOverflow 答案中看到了它的推荐。不过我想了解 Jest 的工作原理。
我真的需要将模拟存储在变量中,还是可以这样做?
describe("foo", function() {
test("my test", function() {
beforeEach(function() {
jest.spyOn(someObject, "someMethod").mockReturnValueOnce("someValue");
});
...
});
});
请注意,我使用的是mockReturnValueOnce 而不是mockReturnValue。
我运行了这两个实现并且它们运行良好,但我想知道我是否可以说它们是等效的?作为“someObject”的一部分的“someMethod”函数是否不会保留为来自其他文件的其他测试的模拟?
【问题讨论】:
-
我从这个 gh repo 中学会了如何使用 jest:github.com/sapegin/jest-cheat-sheet#mock-object-methods
标签: javascript jestjs