2015-05-18 2 views
0

У меня есть простой угловой сервис:Модульного тестирования Как получить доступ свойства объекта

app.service('myService', function() { 

    this.getMsg = function (status, data) { 

     var errMsg = ''; 

     if (status.toString()[0] == 4) { 

      if ((data.message.indexOf("3 tries left") > -1) || (data.message.indexOf("2 tries left")) > -1){ 
       errMsg = "Opps, try later"; 
      } 
      else { 
       errMsg = "Please try again."; 
      } 
     } 

     if (status.toString()[0] == 5) { 
      errMsg = "Under Construction"; 
     } 

     return errMsg; 
    }; 
}); 

И я написал тест, который обеспечивает мою getMsg функции существует, однако, когда я пытаюсь проверить функцию, я получаю сообщение об ошибке :

TypeError: data.message is undefined

Тест:

describe('myService', function(){ 
    var myService; 

    beforeEach(function(){ 

    module('myApp'); 

    inject(function(_myService_) { 
     myService = _myService_; 
    }); 
    }); 

    it('should have an getMsg function', function() { 
    expect(angular.isFunction(myService.getMsg)).toBe(true); 
    }); 

    it('test fucntion', function(){ 
    var result = myService.getMsg(400, "some text to test"); 
    expect(result).toBe('bar!!!'); 
    }); 
}); 
+1

Почему это было вниз проголосовали? Я объяснил эту проблему и предоставил код. Достаточный код есть для ответа, который будет доказан в течение пары минут, как @Tibos выделил ниже. –

ответ

2

Существует разница между тем, как вы ожидали, getMsg, чтобы вести себя, когда вы написали функцию и как вы ее ожидали, когда будете ее протестировать.

Когда вы написали его, вы ожидали, что вторым параметром будет объект, у которого есть свойство message, которое является строкой.

Когда вы протестировали его, вы ожидали, что вторым параметром будет строка.

Если функция является правильным, вы должны изменить эту строку

var result = myService.getMsg(400, "some text to test"); 

к

var result = myService.getMsg(400, { message : "some text to test"}); 
+0

спасибо, работает как ожидалось –