mardi 2 août 2016

Unit testing angular app with breezejs

I'm trying to setup unit tests with an Angular application that utilizes the breezejs library for odata queries. When running my tests with Karma the breeze library appears to attempt a configuration setup which I don't want to happen. I'm using angular mocks to mock the module but it appears the entityManagerFactory runs and tries to configure breeze. Here is the karma.conf setup

files: [
  // 'www/Scripts/**/*.js',
  // 'www/**/*.js',
  'www/Scripts/angular.js',
  'www/Scripts/angular-animate.min.js',
  'www/Scripts/angular-translate.min.js',
  'www/Scripts/angular-route.js',
  'www/Scripts/angular-messages.js',
  'www/Scripts/angular-sanitize.min.js',
  'www/Scripts/angular-resource.js',
  'www/Scripts/naturalSort.js',
  'node_modules/angular-mocks/angular-mocks.js',
  'www/Scripts/jquery-1.10.2.js',    
  'www/Scripts/breeze.min.js',  
  'www/Scripts/breeze.debug.js',
  'www/Scripts/breeze.directives.js',
  'www/Scripts/breeze.bridge*.js',
  'www/app.module.js',
  'www/data/**/*.js',
  'www/core/**/*.js',
  'www/blocks/**/*.js',
  'www/common/**/*.js',
  'www/features/**/*.js',
  'test/unit/**/*Spec.js',
],

I get the following error when I run "karam start"

Error: Unable to initialize OData.  Needed to support remote OData services
        at Object.__requireLib [as requireLib] (www/Scripts/breeze.debug.js:410:11)
        at webApiODataCtor.proto.initialize (www/Scripts/breeze.debug.js:16284:18)
        at initializeAdapterInstanceCore (www/Scripts/breeze.debug.js:1874:14)
        at Object.__config.initializeAdapterInstance (www/Scripts/breeze.debug.js:1795:12)
        at configureBreeze (www/data/entityManagerFactory.js:46:41)
        at Object.emFactory (www/data/entityManagerFactory.js:16:9)
        at Object.invoke (www/Scripts/angular.js:4182:17)
        at Object.enforcedReturnValue [as $get] (www/Scripts/angular.js:4035:37)

The entityManagerFactory calls a function (configureBreeze();) when its loaded to configure breeze, which must be the problem

  function emFactory(breeze) {
    configureBreeze();
    var oldClient = null;

    var factory = {
        newManager: newManager,
        serviceName: eCAT_ServiceName,
        setAuthToken: setAuthToken
    };

    return factory;

Aucun commentaire:

Enregistrer un commentaire