我正在使用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
。
什么是正确的方法来覆盖对象的方法,而不是设置PostStore
中的posts
数组通过做一个aerogram调用,它只是设置它与测试数据?
3条答案
按热度按时间a0x5cqrl1#
我找到了一个jest mock示例函数
例如:
字符串
w8biq8rn2#
快到了,你要做的就是
字符串
368yc8dk3#
您可以获取全局
fetch
并用mock覆盖它,然后在执行的测试中由代码获取。字符串