vli*_*o20 5 javascript testing unit-testing angularjs karma-jasmine
我有以下提供者:
(function (angular) {
angular.module('app')
.provider('$_Config', ConfigProvider);
function ConfigProvider() {
.... //routes definition
}
ConfigProvider.prototype.$get = function () {
return this;
};
ConfigProvider.prototype.getRoutes = function() {...}
//other prototype functions
})(angular);
Run Code Online (Sandbox Code Playgroud)
在app.js我使用它像这样:
app.config(function ($routeProvider, $_ConfigProvider) {
var routes = $_ConfigProvider.getRoutes();
routes.forEach(function(route) {
$routeProvider
.when(route.route, {
.....
})
}
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,直到它进行测试.这是我的测试:
describe('Provider: $_ConfigProvider', function () {
// load the providers module
beforeEach(module('app'));
// instantiate provider
var $_ConfigProvider;
beforeEach(inject(function (_$_Config_) {
$_ConfigProvider = _$_Config_;
}));
it('Should verify getRoutes function', function () {
var routes = $_ConfigProvider.getRoutes();
expect(Object.prototype.toString.call(routes) === '[object Array]').toBe(true);
});
});
Run Code Online (Sandbox Code Playgroud)
运行测试时,我收到以下错误:
Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:unpr] Unknown provider: $_ConfigProvider
Run Code Online (Sandbox Code Playgroud)
注:该$_ConfigProvider是在运行时正确地注射.
您可能不包括在 karma.conf.js 依赖项列表中定义提供程序的文件。看这个问题:
在 Angular 应用程序的 Karma 测试文件中包含依赖项?
我会将 $_Config 重命名为其他名称,“$”通常保留用于特定于角度的组件。
| 归档时间: |
|
| 查看次数: |
6014 次 |
| 最近记录: |