私は、角で、単位テストで新しいです。私たちは、データベースのCRUD操作のためにODATA使用しているので、私たちはそのためのサービスを作成して、次のようになります。odata約束のジャスミンユニットテスト
function DatabaseService($http, $odataresource, DateFactory, constants) {
var url = constants.BACKEND.URL;
var ObjCreate = $odataresource(url + 'Objects/Function.CreateObject', {}, {}, {});
var service = {
createSomething: {
createObj: createObj
}};
return service;
function createObj(formData) {
var myObj = new ObjCreate();
mapData(formData, myObj);
return myObj.$save();
}
コードは私の質問のための抽象化ビットである、そうしてください不思議はありません。私は今すぐfunction createObj()
ユニットテストをしたいが、これはうまくいきません。私は角度のクラスを取って、私たちは$rootScope.digest()
を使用する必要がありますが、私の場合には動作していないよう約束「を実行」のことをそこに学んだ:
describe('createObj', function() {
it('should return data', inject(function ($rootScope) {
var DatabaseService = $injector.get('DatabaseService', { $odataresource: $odataresource });
var formDataMock = {
productName: "Produktname"
};
var test = 'abc';
DatabaseService.createSomething.createObj(formDataMock)
.then(function (data) {
test = data;
})
.catch(function (error) {
test = error;
});
$rootScope.$digest();
console.log(test);
}));
私は、変数のテストの設定を追加しましたたとえばthenパスが実行されたときに参照してください。でも、$rootScope.$digest
を指定しても、そのパスに入ることはありません。私の変数testは決して 'abc'から別のものに変更されることはありません。
私は何を間違っているのかをヒントに教えてください。
[方法angularjsでユニットテストの$ HTTPをするとジャスミン]の可能な重複(http://stackoverflow.com/questions/31108273/how-to-unit-test- http-in-angularjs-and-jasmine) –
この2つのリンクは役に立ちます: http://ng-learn.org/2014/08/Testing_Promises_with_Jasmine/ http://ng-learn.org/2014/08/ Testing_Promises_with_Jasmine_Provide_Spy/ –