Syed Rasheed Syed Rasheed - 3 months ago 58
AngularJS Question

How to test window.location.href using jasmine

This is my controller code

$scope.loadApplications = function () {
var cacheKey = { key: cacheKeys.appList() };
dataFactory.get("/Application/All", { cache: cacheKey })
.then(function (result) {
$scope.count++;
$scope.applications = result.data.data;
$scope.filteredApplicationsList = $scope.applications;
if ($scope.applications.length===0){
$window.location.href = '/Account/WelCome'
}
else {
$scope.isLoad = true;
}

});
};


and this is my jasmine test cases for above function

it('should redirect to welcome page', function () {
scope.applications = {};
scope.loadApplications();
expect(window.location.href).toContain('/Account/WelCome');
});


but it is taking the current url of browser and it is raising an error as

Expected 'http://localhost:49363/Scripts/app/test/SpecRunner.html' to contain '/Account/WelCome'.


can anybody please tell me how to test the url?

R.J R.J
Answer

you should write it in this way.

it('should redirect to welcome page', function () {
        scope.applications = {};
        scope.loadApplications();

        browser.get('http://localhost:49363/Account/WelCome');
        expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
        expect(browser.getCurrentUrl()).toContain('whateverbrowseryouarexpectingtobein');

        //expect(window.location.href).toContain('/Account/WelCome');
    });