2

別のサービスに依存するフィルターを単体テストしようとしています。この問題に関する多くの回答を読みましたが、何も解決しませんでした。私はカルマ/ジャスミンを使用しています

次のようなconf

  // Karma configuration
  // Generated on Thu Nov 26 2015 07:47:24 GMT+0100 (Västeuropa, normaltid)

 module.exports = function(config) {
 config.set({

// base path that will be used to resolve all patterns (eg. files, exclude)


// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'
],


// list of files / patterns to load in the browser
files: [
 'lib/angular.min.js',
 'lib/angular-mocks.js',

 'test.js',
 'app/js/services/*.js',

 'app/js/filters/*.js'

  ],


// list of files to exclude
exclude: [
],


// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-          preprocessor
 preprocessors: {
  },

私のアプリケーションは次のとおりです

// filter

var app=angular.module('app.filter',[]);

app.filter("filterName",['serviceName',function(ServiceName){
return function(input1,input2)
{
//some code
}]);


// service

 var app=angular.module('app.service',[]);
 app.service("serviceName",      [$log,$windows,$route',function($log,$windows,$route){
//some functions

}]);

テスト

   describe('test filter with services dependencies',function()
{

     beforeEach(module('app.service')); 
      beforeEach(module('app.filter'));

      var FilterNAMe, ServiceNAMe ;


 beforeEach(inject(function(_ServiceNAMe _,_FilterNAMe_) // i get error here
 {
  FilterNAMe = _FilterNAMe_;
  ServiceNAMe= _ServiceNAMe_;

 }));

  it('',function()
   {
    //some test;

  });



  });

次のエラーが表示されます

error:[$injector:unpr] http://errors.angularjs.org/1.4.0-rc.2/ $injector/unpr?=%24serviceNameProvider

エラー: windows.inject.angular.mock.inject の宣言の場所

4

1 に答える 1

0

まず、依存関係サービスが配置されているモジュール (app.service) には必要ありません。

それ以外の場合は、提供機能を使用して、現在のモジュールを呼び出すときにサービスを提供します

var $filter,  FilterNAMe ;
beforeEach(function () {

angular.mock.module("app.filter", function ($provide) {
            $provide.value('serviceName');
        });
});

次にフィルターを注入します

    beforeEach( inject(function ( $filter) { //<-- Get the filter provider

    FilterNAMe =$filter('FilterNAMe ',{});

    }));

AngularJS サービスの単体テスト時に依存サービスを注入するという回答を参照してください。

于 2015-12-04T12:27:12.487 に答える