我正在使用 Jest 测试一个 React/Reflux 应用程序。我在商店中有以下功能:
onLoad: function() {
console.log("ORIGINAL LOAD");
// http request here
}
我试图模拟它,以便它只做它需要做的事情而不做实际的网络工作:
beforeEach(function() {
// mock out onLoad so instead of making API call the store gets test data
PostStore.onLoad = jest.genMockFunction().mockImplementation(function () {
var p1 = new Post(
"54da7df5119025513400000a", // id
"Test Post", // title
"Kji6ftLjUqhElgnqOBqMUKxYONpU7nK/cu6jTA==\n", // owner anonId
"Test Course 1", // course name
"This is a test!", // content
6, // upvotes
2, // downvotes
["Kji6ftLjUqhElgnqOBqMUKxYONpU7nK/cu6jTA==\n"] // voter anonIds
);
this.posts = [p1];
console.log("mocked function");
});
// component initialized here
});
但是,似乎甚至从未创建过模拟函数。当我运行测试时,控制台仍然会记录ORIGINAL LOAD
.
覆盖对象方法的正确方法是什么,而不是通过执行 ajax 调用来设置posts
数组,而只是用测试数据设置它?PostStore