我在外部json文件中有模拟数据,我希望它可用于Angular.js中的Jasmine单元测试。不幸的是,我没有被批准在我的开发环境中运行node.js,所以通常的业力示例不适用于我。
我试过了:
beforeEach(inject(function ($injector, $http) {
console.log('this gets called');
$http.get('/mockData/surveySetup.json').success(function (data) {
console.log('this never gets called');
}).error(function () {
console.log('this never gets called');
});
}));
$ http.get之外的console.log被调用,但$ http.get中的那些内容从不会触发,我在chrome的网络选项卡中看不到对json文件的调用。
如何加载此文件以在我的测试中使用?在一天结束时,我只需要访问.json文件中的数据,以便在单元测试中引用它。
提前致谢。
答案 0 :(得分:1)
我发现我需要将我的.json文件转换为Angular服务(实际上是一个Angular常量用于我的目的)。然后我的外部文件很容易在我的测试中获取,如下所示:
var setupData = $injector.get('SetupData');
$httpBackend.whenGET('/surveySetup').respond(setupData);
$httpBackend.flush();
答案 1 :(得分:0)
不确定究竟要实现什么,但通常可以使用$ httpBackend对其进行配置,可以将其配置为模拟来自任何代码的实际请求(在这种情况下,您可能还需要使用URL语法进行设置,但无论如何这是单元测试的常见情况。在这种情况下,您不需要读取JSON文件,您只需在该URL的$ httpBackend配置中提供JS对象,并且在调用此URL时$ httpBackend将返回指定的对象。查看:$httpBackend