Я получил некоторые модульные тесты, чтобы сделать о службе, которую я использую (angular-websql), и у меня возникла проблема с зудом.
Эта служба - $ webSql - создаст базу данных, которая представляет собой объект с несколькими функциями:
$scope.db = $webSql.openDatabase('lastUser', '1.0', 'Data storage of last connected user', 2 * 1024 * 1024);
$scope.db.select(tableName, whereClause).then(function (result) {...});
$scope.db.insert(tableName, whereClause).then(function (result) {...});
$scope.db.update(tableName, whereClause).then(function (result) {...});
$scope.db.del(tableName, whereClause).then(function (result) {...});
And so on...
В своем модульном тесте я издевался над службой:
mock$webSql = {
openDatabase: function () {
return {
createTable: function () {
var d = _$q_.defer();
d.resolve();
return d.promise;
},
insert: function () {
var d = _$q_.defer();
d.resolve();
return d.promise;
},
del: function () {
var d = _$q_.defer();
d.resolve();
return d.promise;
},
update: function () {
var d = _$q_.defer();
d.resolve();
return d.promise;
},
select: function () {
var d = _$q_.defer();
d.resolve();
return d.promise;
}
};
}
};
Проблема в том, что я оцениваю результаты моего обещания в моем контроллере, например, я тестирую результат после функции select, чтобы увидеть, есть ли у меня строка в моей таблице. Итак, я использую некоторые вещи, такие как result.rows.length
но я не знаю, как протестировать его с помощью Jasmine.
Готово. Мне просто пришлось вставить d.resolve()
объект, соответствующий структуре тестируемого объекта результата, т.е.
|
|
select: function () {
var d = _$q_.defer();
d.resolve({row : [] });
return d.promise;
}
|
|