我正在尝试完成一个Jasmine测试(使用Karma和Intellij13)来验证JSON文件。理想情况下,我的测试只是将一个JSON文件加载到一个数据对象中,然后让我进行解析以检查有效的格式和数据。我不需要在之前或之后验证函数,也不需要针对服务器进行测试
我的基本设置如下:
它(“应该加载一个外部文件”,函数(){
var异步调用完成,结果,
_这个=这个;
//当ajax调用完成时,asyncCallComplete设置为true
asyncCallComplete=false;
//result存储成功的ajax调用的结果
结果=空;
//第1节-调用异步函数
运行(函数(){
返回$.ajax('/test/config.json'{
键入:“GET”,
成功:功能(数据){
asyncCallComplete=true;
结果=数据;
},
错误:函数(){
asyncCallComplete=true;
}
});
});
//第2节-等待异步调用完成
waitsFor(函数(){
返回asyncCallComplete!==false;
},“异步完成”);
//第3节-执行测试
返回运行(函数(){
返回expect(result).not.toBeNull();
});
}
问题是,无论我使用什么路径,我都会收到404错误,文件将无法加载。我已尝试使用此测试服务从远程服务器加载外部JSON结果:
http://date.jsontest.com/
这是有效的
我的测试文件名为/test/mySpec.js,我的karma.conf.js文件位于根目录下。我已将JSON文件移动到所有这些位置,但运气不佳。我做错了什么
更新答案:
根据下面的答案,我在karma.conf.js中添加了以下内容:
//固定装置
{模式:'test/*.json',
是的,
是的,
包括:假
}
然后,我这样写我的测试:
var-json:any;
它(“应加载夹具”,函数(){
jasmine.getFixtures().fixturesPath=“base/test/”
var f=readFixtures(“registration.json”);
json=json.parse(f);
expect(json.toBeDefined();
})
它(“应该有一个标题”,函数(){
expect(json.title).toNotBe(null);
})
等
就这样过去了
您是否通过karma.config.js提供JSON文件
您可以通过fixture提供JSON文件:
文件:[
//棱角的
'angular.min.js',
'angular route.js',
“angular mocks.js”,
//jasmine jquery助手
“jquery-1.10.2.min.js”,
“jasmine jquery.js”,
//应用程序
“../../public/js/app.js”,
//测验
“*-spec.js”,
//JSON固定装置
{模式:'/test/*.json',
是的,
是的,
包括:false}
],