我正在尝试为我的typescript类创建一个测试,该类从json文件中读取数据。
readData<T>(filePath: string): Promise<T> {
return Qajax.getJSON(filePath);
}
我正在使用Jasmine和karma环境进行测试。我的问题是,即使我在业力中添加任何json文件,它也不会被加载到chrome启动器中
files: [
'libs/angular/angular.js',
'libs/angular/angular-route.js',
'libs/angular/angular-mocks.js',
'libs/collections/collections.js',
'tests/framework/common/app_config.json',
'tests/package.json',
{ pattern: 'libs/qajax/qajax.js', included: false },
{ pattern: 'libs/q/q.js', included: false },
{ pattern: 'tests/framework/**/*.js', included: false },
{ pattern: 'tests/toolpattern/**/*.js', included: false },
{ pattern: 'tests/test-main.js', included: true },
]
正如您在上面的karma配置中所看到的,我添加了一个名为app_config.json的文件。现在我试图从测试中读取该文件...
it("read data test.", function (done) {
var promise = configurationAccessorImpl.readData("tests/framework/common/app_config.json");
promise.then(result => {
console.info("Get configuration test - Success.");
}, error => {
console.log(error);
});
});
由于json文件不存在,测试总是失败..
答案 0 :(得分:1)
库jasmine-jquery为Jasmine JavaScript测试框架提供了几个扩展。 使用扩展API处理测试规范中的HTML,CSS和JSON fixture,以读取.json文件。
步骤: - 将jasmine-jquery.js添加到libs&amp; jasmine-jquery.d.ts到/ libs / typings ,将karma.config中的必需引用添加到libs,添加JSON fixture位置以从以下位置读取文件:
import sys
print sys.version
2.7.11 |Anaconda 2.3.0 (64-bit)| (default, Jan 29 2016, 14:26:21) [MSC v.1500 64 bit (AMD64)]
- 现在在karma测试中,可以按如下方式读取文件:
// list of files / patterns to load in the browser
files: [
…………………………..
'libs/jquery/jquery-1.9.1.js',
'libs/jasmine-jquery/jasmine-jquery.js',
………………….
// JSON fixture
{
pattern: 'configuration/*.json',
watched: true,
served: true,
included: false
}
],
答案 1 :(得分:0)
目前尚不清楚configurationAccessorImpl.readData函数的作用。但是,如果您尝试使用HTTP请求加载JSON文件,那么您可能会遇到karma从/ base相对路径提供测试文件这一事实的问题。
尝试将测试更改为:
var promise = configurationAccessorImpl.readData("/base/tests/framework/common/app_config.json");
它可能会起作用。