1
ユニットテストをテストするために約束リターンをあざけるを持ちます。ユニットテスト:私はEMITが約束コールバックで呼び出されるかどうかを確認したいのトラブル私のEMIT</p> <p>をテストするために、約束のリターンをあざけるを持つ:トラブル私のEMIT
は、これは私がテストだ私のコードです:
"use strict";
angular.module("app.directives")
.directive("modalFilter", ["filterValidationService", function(filterValidationService) {
return {
restrict: "E",
scope: {},
templateUrl: "templates/components/modal-filter.html",
link: function(scope) {
let defaultFilter = {"size": {"to": 0, "from": 0}};
scope.clearFilter = function() {
scope.filter = defaultFilter;
};
//New - requires unit test
scope.updateTable = function() {
const tab = "availabilities";
const isFilter = scope.filter === defaultFilter ? false : true;
filterValidationService.validateSize(scope.filter.size)
.then(filterObj => {
scope.$emit("filter:cardData", filterObj, tab, isFilter);
});
};
scope.clearFilter();
}
};
}]);
これは私のユニットテストです:
"use strict";
describe("modal filter component:", function() {
var element;
var scope;
var mockData = {"size": {"to": 0, "from": 0}};
var mockFilteredData = {"size": {"to": 900, "from": 100}};
var filterValidationService;
beforeEach(angular.mock.module("eg.insight.services"));
beforeEach(angular.mock.module("eg.insight.directives"));
beforeEach(inject(function ($compile, $injector, $q, $rootScope, filterValidationService) {
var deferred = $q.defer();
scope = $rootScope.$new();
scope.filter = mockData;
filterValidationService = filterValidationService;
element = "<modal-filter></modal-filter>";
element = $compile(element)(scope);
angular.element(document.body).append(element);
scope.$digest();
scope = element.isolateScope();
sinon.spy(scope, "$emit");
sinon.stub(filterValidationService, "validateSize").returns(deferred.promise);
}));
it("should emit for filtered data when updateTable is called", function() {
scope.updateTable();
expect(scope.$emit.calledWith("filter:cardData", mockData.size, "availabilities", false)).toEqual(true);
});
});
私はジャスミンのユニットテストとsinonでangular1使用しています。私が手
エラーは次のとおりである:「真等しくなるように偽の期待」
それは次のようになりますか?deferred.resolved(mockData.size); – AngularM
メソッド名は 'resolve'ですhttps://docs.angularjs.org/api/ng/service/$qそして' it() 'に' deferred.promise.finally() 'を追加する必要があります。 'メソッドを呼び出して、' expect() 'を実行します。 – Stephen