2016-08-19 66 views
0

我得到了一些單元測試要做的關於我使用的服務(angular-websql),我得到了一個癢的問題。AngularJS - 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進行測試。

回答

0

完成。我只需要在d.resolve()中輸入一個匹配測試結果對象結構的對象Ie。

| 
| 
select: function() { 
    var d = _$q_.defer(); 
    d.resolve({row : [] }); 
    return d.promise; 
} 
| 
|