Модульное тестирование angularjs $ watch в Жасмине - PullRequest
0 голосов
/ 03 сентября 2018

Я довольно плохо знаком с AngularJS и еще новее с юнит-тестами в Jasmine. Я должен написать тест для:

$scope.$watch(
function () {
    return alertService.getAlert();
},
function (newVal, oldVal)
{
    if (typeof newVal !== 'undefined') {
        $scope.alert = alertService.getAlert();
    }
});

getAlert возвращает такие вещи, как:

[ Object({ type: 'typeOfAlert', message: 'alertMessage' }) ].

Теперь я узнал (в некоторых случаях даже понял) кое-что о дайджесте, тайм-аутах, сервисах насмешек и т. Д., Но я знаю только, как обращаться с переменными часами, и я не уверен, что делать с:

alertService.getAlert();

Может ли кто-нибудь дать мне руку?

1 Ответ

0 голосов
/ 03 сентября 2018

Хорошо, через два дня я нашел свою ошибку. Просто нужно ввести сервис в

beforeEach(inject(function ($rootScope, $controller, _$timeout_, _alertsService_) {
    scope = $rootScope.$new();
    controller = $controller('mainPageController', {
        '$scope': scope
    });
    alertService = _alertService_;
}));

и протестируйте все с помощью

it('should fire getAlerts when alert is appended', function(){
    alertService.appendAlert('success', 'TESTMESSAGE' );
    alertService.getAlert();
    scope.$digest();
    expect(scope.alerts).toEqual([
        Object({ type: 'success', message: 'TESTMESSAGE' })
    ]);
})

Сейчас это стыдно, но я надеюсь, что у кого-то будет такая же проблема в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...