使用 Karma/Jasmine 为 Angular 应用程序设置单元测试套件时,是否建议config
在测试文件中包含带有 app 模块功能的 js?
我已经读过建议将其排除在测试之外,但这似乎很尴尬,因为config
函数中经常会发生关键设置,这会阻止应用程序工作。
这方面的最佳做法是什么?创建一个以“模拟”方式执行相同操作的模拟配置函数?
我自己也遇到过这个问题,但想了解更广泛的策略: How do unit test with angular-translate
使用 Karma/Jasmine 为 Angular 应用程序设置单元测试套件时,是否建议config
在测试文件中包含带有 app 模块功能的 js?
我已经读过建议将其排除在测试之外,但这似乎很尴尬,因为config
函数中经常会发生关键设置,这会阻止应用程序工作。
这方面的最佳做法是什么?创建一个以“模拟”方式执行相同操作的模拟配置函数?
我自己也遇到过这个问题,但想了解更广泛的策略: How do unit test with angular-translate
在我的应用程序中,我最终使用了以下解决方案:
定义一个“appBase”模块,其中包含我在单元测试时要运行的所有config
和函数,并创建另一个“app”模块,该模块将“appBase”模块声明为依赖项并包括我不运行的所有函数单元测试时。然后我所有的单元测试都使用“appBase”模块,而最终应用程序使用“app”模块。在代码中:run
config
run
angular.module('appBase', ['dependencies'])
.config(function() {
// This one will run when unit-testing. Can also set-up mock data
// that will later be overridden by the "app" module
});
angular.module('app', ['appBase'])
.config(function() {
// This function will only run in real app, not in unit-tests.
});