我为角度2 编写 karma jasmine 测试用例,
我们遇到了在单独的JSON文件中模拟数据的要求,因为数据很大(想要确保代码清洁)。为此,我搜索了很多但没有找到合适的解决方案。
我们已经使用 MockBackend 来模拟HTTP服务,所以我们不能使用angular的HTTP服务加载JSON,因为它最终请求将转到MockBackend。
没有使用任何第三方lib,还有其他方法吗? jasmine-jquery还是Karma-jasmine-preprocessor? 更多种类的Angular JS 2方式 。
答案 0 :(得分:22)
我有同样的问题!
最后,我意识到只在TypeScript中直接使用require()
函数就可以了。它受Node和@ types / node支持,否则有些需要声明require类型。
因此,要在Angular 2 Karma Jasmine测试中从JSON文件加载模拟数据,请转到:
const data: any = require('../../assets/mock-data.json');
答案 1 :(得分:0)
示例:
`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();
});