2014-04-28 12 views
5

Jestem po prostu nowy w ramach testu jaśminowego js i dostałem dzisiaj dziwne wyniki.Jasmine array.length oczekiwać

Zobacz poniższy kod (search to funkcja preformy żądanie API i zwraca obietnicę):

it('should be able to search', function() { 
    search('string').done(function(result) { 
     expect(result.length).toBeGreaterThan(1); //true 
     console.log(result.lenght); // undefined 
    }); 
}); 

Chodzi o to, że ze względu na pewne błędy, które muszę naprawić, wynik z obietnica jest niezdefiniowana, ale test jest oznaczony jako Success. Uważam to za mylące i jeśli nie będę tego dokładnie badał, uwierzyłbym, że test zakończył się sukcesem, podczas gdy wyraźnie nie było. Czy to oczekiwane zachowanie?

Odpowiedz

10

Masz literówkę w console.log (result.lenght), spróbuj tego.

it('should be able to search', function() { 
search('string').done(function(result) { 
    expect(result.length).toBeGreaterThan(1); //true 
    console.log(result.length); // undefined 
}); 
}); 
3

Do testowania asynchronicznych funkcji, wasze testy muszą być pisane nieco inaczej. Od najnowszych Jasmine (2.0) documentation, asynchroniczny testu są zapisywane w następujący sposób:

beforeEach(function(done) { 
    setTimeout(function() { 
     // do setup for spec here 

     // then call done() in beforeEach() to start asynchronous test 
     done(); 
    }, 1); 
}); 

it('should be able to search', function(done) { 
    search('string').done(function(result) { 
     expect(result.length).toBeGreaterThan(1); //true 

     // call done() in the spec when asynchronous test is complete 
     done(); 
    }); 
}); 
+0

postanowiłem zatrzymać szuka sposobu, aby zrobić requirejs Based Testing jak Dostaję trochę podrażniona, wygląda na to ponownie w ciągu kilku dni/tygodnie. Dziękujemy za Twój wkład! – MegaWubs

Powiązane problemy