Здравствуйте, я хочу реализовать некоторые тестовые примеры для моего приложения с ионной каркасом, которое использует кордову sqliteplugin для получения данных из базы данных sqlite.Описание теста кармады Cordova sqliteplugin
Я очень новичок в написании тестовых примеров для angularjs.
Моя цель - проверить, имеются ли данные для моего обслуживания.
Ну в моем app.js открыть базу данных с этим:
angular.module('starter', ['ionic','starter.services', 'starter.controllers', 'starter.config','ngCordova'])
.run(function($ionicPlatform, $cordovaSQLite, $ionicLoading) {
$ionicPlatform.ready(function() {
var dbName = 'testDB.db';
if(window.cordova) {
window.plugins.sqlDB.copy(dbName);
db = $cordovaSQLite.openDB(dbName);
}
....
Моим services.js ищет так:
angular.module('starter.services', ['ngCordova'])
.factory('ProductService',function($cordovaSQLite){
var getAllProducts = function() {
var productList = [];
var query = "SELECT c.name as name, c.id as id FROM cars as c ORDER BY c.name";
$cordovaSQLite.execute(db, query, []).then(function(res) {
if(res.rows.length > 0) {
for(var i = 0; i < res.rows.length; i++) {
productList.push({id: res.rows.item(i).id, name: res.rows.item(i).name});
}
}
}, function (err) {
console.error(err);
});
return productList;
};
return {
getAllProducts: getAllProducts
};
});
И мое описание теста, чтобы проверить сервис выглядит это:
describe('ProductService unit tests', function() {
var ProductService;
beforeEach(module('starter.services'));
beforeEach(angular.mock.module('starter'));
beforeEach(inject(function(_ProductService_) {
ProductService = _ProductService_;
}));
it('can get an instance', inject(function(ProductService) {
expect(ProductService).toBeDefined();
}));
//THIS TEST FAILS
it('should get some products from the database', inject(function(ProductService) {
expect(ProductService.getAllProducts().length).toBeGreaterThan(0);
}));
});
Если я запускаю тест я получаю:
TypeError: 'null' is not an object (evaluating 'n.transaction')
Я думаю, что это потому, что база данных на самом деле не инициализирована во время теста, поэтому я попытался издеваться над стартовым приложением, но это не решило проблему. Я попытался сделать это на Google, но не смог найти примеров или учебников для кармы с sqlite и angularjs.
Спасибо за любую помощь.
Любое обновление по этому вопросу, я поражаюсь на одно и то же – mahi