我有以下ES6模块:
network.js
export function getDataFromServer() {
return ...
}
Run Code Online (Sandbox Code Playgroud)
widget.js
import { getDataFromServer } from 'network.js';
export class Widget() {
constructor() {
getDataFromServer("dataForWidget")
.then(data => this.render(data));
}
render() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来测试Widget的模拟实例getDataFromServer.如果我使用单独的<script>s代替ES6模块,比如在Karma中,我可以编写我的测试:
describe("widget", function() {
it("should do stuff", function() {
let getDataFromServer = spyOn(window, "getDataFromServer").andReturn("mockData")
let widget = new Widget();
expect(getDataFromServer).toHaveBeenCalledWith("dataForWidget");
expect(otherStuff).toHaveHappened();
});
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我在浏览器之外单独测试ES6模块(比如使用Mocha + babel),我会写一些类似于:
import { Widget } from 'widget.js';
describe("widget", function() {
it("should do stuff", function() {
let getDataFromServer = spyOn(?????) …Run Code Online (Sandbox Code Playgroud)