使用angular.js加载用于jasmine测试的json文件

时间:2014-01-19 00:06:47

标签: unit-testing angularjs jasmine

我在外部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文件中的数据,以便在单元测试中引用它。

提前致谢。

2 个答案:

答案 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