mardi 6 octobre 2015

Why is there a difference between these approaches in testing a controller

While doing a Jasmine test for an Angular Controller, I find a difference between these two approaches. There shouldn't be, but there is. That said, using debug, I find in both cases the correct mocked items are coming thru, however the tests behave differently.

First: Here we mock service items which are then injected using DI into the controller at creation.

$provide.value('core.data.CompanyService', companyService);
$provide.value('core.list.ListGenerator', listGeneratorFactory);
$provide.value('core.actions.ActionContext', actionContext);

ActivitiesCtrl = $controller('activities.ActivitiesCtrl', {
  $scope: scope
});

Second: Here we explicitly specify the injected service items in the controller creation:

ActivitiesCtrl = $controller('activities.ActivitiesCtrl', {
  $scope: scope,
  'core.lists.ListGenerator': listGeneratorFactory,
  'core.actions.ActionContext': actionContext,
  'core.data.CompanyService': companyService
});

Aucun commentaire:

Enregistrer un commentaire