我有以下JavaScript
功能(注意这是不是使用Angular
),它接受服务并在其中使用它来进行调用:
function MyFunction(service) {
var my = {};
my.getData = function () {
var data = service.getDataFromHttpService();
//some other processing...
return data;
}
return my;
};
该服务如下所示:
var TheDataService = (function() {
var my = {};
my.getDataFromHttpService = function () {
//Call some HTTP service and get data to return...
return data;
}
return my;
}());
调用代码如下所示:
var mf = new MyFuntion(TheDataService);
var result = mf.getData();
我正在尝试在jasmine
中创建一个简单的单元测试来监视传入MyFunction
的服务并查看是否已调用getDataFromHttpService()
。
it("should call spyOn TheDataService and ensure getDataFromHttpService is called", function() {
var spySrv = spyOn(TheDataService, "getDataFromHttpService");
var mf = new MyFuntion(spySrv);
var result = mf.getData();
expect(TheDataService.getDataFromHttpService).toHaveBeenCalled();
});
我得到的错误如下:
TypeError:service.getDataFromHttpService不是函数
我尝试了一些变化但没有任何效果。实际代码在单元测试之外工作。服务提取数据,一切都很好。此外,如果我直接在TheDataService
上直接测试和间谍,而不是通过MyFunction
,测试也会通过。但是,我需要测试传递给构造函数的服务,并确定它是否已通过间谍调用。我做错了什么?