如何在Angular 2业力茉莉花测试中从JSON文件加载模拟数据?

时间:2017-02-09 05:38:37

标签: json angular jasmine karma-jasmine

我为角度2 编写 karma jasmine 测试用例,

我们遇到了在单独的JSON文件中模拟数据的要求,因为数据很大(想要确保代码清洁)。为此,我搜索了很多但没有找到合适的解决方案。

我们已经使用 MockBackend 来模拟HTTP服务,所以我们不能使用angular的HTTP服务加载JSON,因为它最终请求将转到MockBackend。

没有使用任何第三方lib,还有其他方法吗? jasmine-jquery还是Karma-jasmine-preprocessor? 更多种类的Angular JS 2方式

3 个答案:

答案 0 :(得分:22)

我有同样的问题!

最后,我意识到只在TypeScript中直接使用require()函数就可以了。它受Node和@ types / node支持,否则有些需要声明require类型。

因此,要在Angular 2 Karma Jasmine测试中从JSON文件加载模拟数据,请转到:

const data: any = require('../../assets/mock-data.json');

PS:credits to Artur Ampilogov

答案 1 :(得分:0)

我试图这样做, 如果您传递JSON的路径,则system.import有效

示例:

`System.import('../../assets/mock-data/mock-data.json')
.then((json) => {
console.log(json);
});`

真正奇怪的是,我没有设法让它与变量一起工作。 例如:

`let myUrl: string = '../../assets/mock-data/mock-data.json';
    System.import(myUrl)
    .then((json) => {
        console.log(json);
    });`

答案 2 :(得分:0)

您可以通过指定

来配置打字稿编译器以加载json文件
--resolveJsonModule

或通过添加

"resolveJsonModule": true

到tsconfig.json的editorOptions属性

然后,您可以在spec文件中,将json文件导入到变量中,如下所示:

import * as myJson from './test/myJson.json';

然后您可以在测试中访问它,例如:

it('it should let me access properties from my json file', () => {
    expect(myJson.myProperty).toBeTruthy();
});