Próbuję napisać test jednostki, który zapewnia, że poprawna zmienna jest wysyłana do właściwości resolve
z ui.bootstrap.modal
z komponentów Bootstrap Angular-UI . Oto co mam do tej pory:Jak przetestować właściwość 'resolve' w module Bootstrap Modal Angular-UI
// Controller
angular.module('app')
.controller('WorkflowListCtrl', function ($scope, $modal) {
// Setup the edit callback to open a modal
$scope.edit = function(name) {
var modalInstance = $modal.open({
templateUrl: 'partials/editWorkflowModal.html',
controller: 'WorkflowEditCtrl',
scope: $scope,
resolve: {
name: function() { return name; }
}
});
};
});
Warto zauważyć, że nieruchomość resolve.name
musi być funkcja składowa kątowa-UI pracować poprawnie - poprzednio próbowałem resolve: { name: name }
ale to nie działa.
// Unit Test
describe('Controller: WorkflowListCtrl', function() {
// load the controller's module
beforeEach(module('app'));
var workflowListCtrl,
scope,
modal;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
modal = {
open: jasmine.createSpy()
};
workflowListCtrl = $controller('WorkflowListCtrl', {
$scope: scope,
$modal: modal
});
it('should allow a workflow to be edited', function() {
// Edit workflow happens in a modal.
scope.edit('Barney Rubble');
expect(modal.open).toHaveBeenCalledWith({
templateUrl: 'partials/editWorkflowModal.html',
controller: 'WorkflowEditCtrl',
scope: scope,
resolve: {
name: jasmine.any(Function)
}
});
});
}));
});
W tej chwili, to jest po prostu sprawdzenie, że nieruchomość resolve.name
jest funkcją, ale to, co naprawdę chciałbym zrobić, to twierdzą, funkcja resolve.name
zwraca Barney Rubble
. Składnia ta oczywiście nie działa:
expect(modal.open).toHaveBeenCalledWith({
templateUrl: 'partials/editWorkflowModal.html',
controller: 'WorkflowEditCtrl',
scope: scope,
resolve: {
name: function() { return 'Barney Rubble'; }
}
});
Wydaje się jakoś chcą szpiegować funkcji resolve.name
sprawdzić nazwano z Barney Rubble
ale nie mogę znaleźć sposób, aby to zrobić. Jakieś pomysły?
może można zobaczyć: http://stackoverflow.com/questions/26853603/unit-testing-angular-bootstrap-modal/26942188 –