2

Я хочу добавить несколько тестовых примеров для своего приложения angularjs специально для службы базы данных.Единичные тесты AngularJS для службы базы данных

Ну, проблема в том, что я не могу открыть базу данных в своем модульном тесте.

Мой TestCase выглядит следующим образом:

describe("DatabaseCreateService‚", function() { 
    var DatabaseCreateService,cordovaSQLite; 

    beforeEach(module("starter.services")); 
    beforeEach(module("ngCordova")); 
    beforeEach(module("ionic")); 

    beforeEach(inject(function (_DatabaseCreateService_, $cordovaSQLite) { 
    DatabaseCreateService = _DatabaseCreateService_; 
    cordovaSQLite = $cordovaSQLite; 
    })); 

    it("should create the table cg_local_values", function() { 
    var db = DatabaseCreateService.initDB("Test.db"); 
    expect(db).toBeDefined(); 
    }); 
}); 

Моя фабрика выглядит следующим образом:

var initDB = function(dbName) { 
    $ionicPlatform.ready(function() { 
    if (window.cordova) { 
     db = $cordovaSQLite.openDB(dbName); 
     return db; 
    }else{ 

     db = window.openDatabase(dbName, '1', 'my', 1024 * 1024 * 100); 
     console.log(JSON.stringify(db)); 
     return db; 
    } 
    }); 
}; 

Ну я получаю эту ошибку, если я бегу старт карма:

Expected undefined to be defined. 
     at Object.<anonymous> (pathToTests/tests/services/DatabaseServiceTest.js:42:16) 
Chrome 46.0.2490 (Mac OS X 10.11.1): Executed 24 of 24 (1 FAILED) (0.183 secs/0.146 secs) 

Как карма тестовый браузер Я использую браузер Chrome.

ответ

1

Ну, я узнал, что мне нужно сохранить db в beforeEach после того, как ionicPlatform готов. Теперь это выглядит как это и его работа:

var DatabaseCreateService, cordovaSQLite, ionicPlatform, rootScope, q; var db = null;

beforeEach(module("starter.services")); 
beforeEach(module("ngCordova")); 
beforeEach(module("ionic")); 

beforeEach(inject(function (_DatabaseCreateService_, $cordovaSQLite,$ionicPlatform,$rootScope,$q) { 
    DatabaseCreateService = _DatabaseCreateService_; 
    cordovaSQLite = $cordovaSQLite; 
    ionicPlatform = $ionicPlatform; 
    q = $q; 
    rootScope = $rootScope; 

    ionicPlatform.ready(function() { 
    db = window.openDatabase("Test.db", '1', 'my', 1024 * 1024 * 100); 
    }); 
})); 
Смежные вопросы