Сбой преобразования строки в дату без сообщения об ошибке в Power BI

Прежде всего, setTimeout особенно сложно тестировать, так как трудно издеваться. К счастью, у AngularJS есть обертка вокруг него ($timeout), играющая ту же роль, но ее можно легко высмеивать:

  ls.DoIt = function() {
    var deferred = $q.defer();

    $timeout(function(){
        deferred.resolve(5);
    },3000);

    return deferred.promise;
  }

Макет, предоставленный для $timeout, позволяет нам легко имитировать прошедшее время (с $timeout.flush()), что означает, что наши тесты могут выполняться быстро, не ожидая завершения события async (обратите внимание, что производственный код по-прежнему использует асинхронный API!).

Измененные тесты выглядят так:

it("should equal 5",  inject(function(myservice, $timeout) {

    var valueToVerify;
    myservice.DoIt().then(function(returned) {
      valueToVerify = returned;  
    });  
    $timeout.flush();        
    expect(valueToVerify).toEqual(5);
}));

И, наконец, рабочий jsFiddle: http://jsfiddle.net/v9L9G/1/

0
задан Luis Ramon Ramirez Rodriguez 17 January 2019 в 08:32
поделиться