我正在为需要一些相当复杂的json对象的项目编写单元测试。它们变得太冗长以至于无法插入spec文件,我想将本地json文件导入到我的测试中。我已经尝试了多种解决方案并不真正为这个项目工作: Loading a mock JSON file within Karma+AngularJS test Angular-Jasmine, loading json How to load external Json file using karma+Jasmine for angularJS testing?/ 和使用JavaScript与XMLHttpRequest()
.... 什么是正确的方式去加载外部文件到规范,而无需创建新的依赖关系?单元测试:AngularJS + Karma + Jasmine,加载本地JSON
0
A
回答
0
我认为在您的案例中测试的最佳方式是使用$httpBackend。它允许使用您的$resource
或$http
并为他们提供测试数据。
如果你要处理大量json
对象,你可以在单独的js文件中定义它们(函数),包括这些文件在您的测试JS包,只是调用这些函数来回报您的json
当你设置$httpBackend
服务。 希望这有助于。
更新 由于测试只是普通的老js,您可以创建一个单独的js文件。并在其中声明一个函数,它将返回你的json。
(function (window) {
'use strict';
if (!window.myJsonMocks){
window.myJsonMocks = {}; //creating the object that will contain all the functions with json
}
window.myJsonMocks.myCustomersQueryResultJson = function(){
return '{"value":[{"CategoryInfo":{"Id":1,"Type":1},"Caption":"Test","Path":"1/#/1"},{"CategoryInfo":{"Id":2,"Type":1},"Caption":"new","Path":"2/#/2"},{"CategoryInfo":{"Id":3,"Type":2},"Caption":"Another one","Path":"3/#/3"}]}'
};
})(window);
既然你声明为IIFE它将注册在全球范围内的功能,因此,这将是在测试中使用。只要确保在测试场景之前包含它。然后你只需拨打
$httpBackend.when('GET', 'api/customerssdata').respond(window.myJsonMocks.myCustomersQueryResultJson());
相关问题
- 1. 调试反应单元测试(Karma/Jasmine)
- 2. 服务/工厂单元测试 - AngularJS - Jasmine
- 3. AngularJS和Karma/Jasmine单元测试 - 文件夹结构和生产
- 4. 如何将ngRoute注入Jasmine/Karma AngularJS单元测试?
- 5. AngularJS测试指令与Karma,Jasmine和ngHtml2JsPreprocessor:模板未加载
- 6. angularjs工厂的Jasmine 2.0单元测试
- 7. AngularJS测试与Karma
- 8. 使用gulp.watch with browserified karma/jasmine单元测试失败,出错
- 9. 用EJS索引进行角度Karma-Jasmine单元测试
- 10. 角度Karma/Jasmine单元测试不起作用
- 11. 单元测试角2应用程序使用Jasmine Karma without Webpack
- 12. 问题单元测试Karma/Jasmine的ES6角度指令ControllerAs
- 13. 与Jasmine,Karma和ng-Mock的角度单元测试服务
- 14. Angular 1.5使用Karma Jasmine组件模板单元测试
- 15. Angular 2 Observable Service Karma Jasmine单元测试不起作用
- 16. 如何在Angular 2 karma jasmine测试中从JSON文件加载模拟数据?
- 17. 用node-inspector调试karma-jasmine测试
- 18. Jasmine Karma单元测试在Angular2中未检测到我的测试用例单元测试
- 19. 单元测试:Karma-Jasmine没有隐式地调用$ rootScope来解析Promise。$ digest();
- 20. Karma Angular.js单元测试expectPUT
- 21. 如何使用Karma/Jasmine测试AngularJS应用程序
- 22. 重新加载Karma,Jasmine和karma-browserify所需的模块
- 23. Karma执行的零测试(AngularJS,RequireJS)
- 24. karma-jasmine - 如何测试返回对象
- 25. Angular-Jasmine,加载json
- 26. 将Karma插件'jasmine-matchers'添加到karma.conf.js框架中,仍然无法在单元测试中加载
- 27. 单元测试AngularJS控制器失败
- 28. Karma Jasmine Cordova插件
- 29. Karma Jasmine NPM config
- 30. AngularJS单元测试
是的,我使用$ httpBackend来模拟其余的API。我认为你是正确的,但你能提供一个例子吗? – arturobelano
是的,仍然有点困惑。我通过我的karma配置文件包含了js文件,但是如何将该JavaScript文件注入到我的规范中? – arturobelano
完美答案,非常感谢。 – arturobelano