2016-08-19 8 views
0

を返すオブジェクトのジャスミンとカルマでのテストは、私はいくつかのユニットテストは、(角-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のようなものを使用していますが、ジャスミンでテストする方法はわかりません。

答えて

0

完了。私はちょうどd.resolve()の中に、テストされた結果オブジェクトの構造にマッチするオブジェクトを入れなければなりません。

| 
| 
select: function() { 
    var d = _$q_.defer(); 
    d.resolve({row : [] }); 
    return d.promise; 
} 
| 
| 
関連する問題