2015-01-21 20 views
5

nel mio programma che sto calcolando due numeri, e voglio fare in modo che la sottrazione di loro è uguale a 1.goniometro - confrontare i numeri

questo è il codice:

var firstCount=element.all(by.repeater('app in userApps')).count(); 
var secondCount=element.all(by.repeater('app in userApps')).count(); 

finora è buono - Sto prendendo i numeri. il problema viene dopo:

var sub=secondCount-firstCount; 
expect(sub).toEqual(1); 

sto ottenendo questo errore:

Expected NaN to equal 1. 

qualche idea?

risposta

4

Sia firstCount e secondCount sono promesse che sono necessari per essere risolti:

element.all(by.repeater('app in userApps')).count().then(function (first) { 
    element.all(by.repeater('app in userApps')).count().then(function(second) { 
     expect(first - second).toEqual(1); 
    }) 
}); 
+0

Sto ancora cercando di capire il concetto di "promesse" ma funziona! molte grazie. – user2880391

0

E 'possibile risolvere solo la prima promessa. Il goniometro adatta expect per "capire" le promesse. Consultare https://github.com/angular/protractor/blob/master/docs/control-flow.md#protractor-adaptations e https://github.com/angular/protractor/issues/128.

element.all(by.repeater('app in userApps')).count().then(function (first) { 
    // Do any changes here... 
    var second = element.all(by.repeater('app in userApps')).count(); 
    // Here expect() resolves 'second' 
    expect(second).toEqual(first + 1); 
}) 

});

0

Stai facendo assolutamente bene. Ma Prima del confronto, controllare se il valore del risultato è il tipo di numero o meno.

Esempio-

expect(sub).toEqual(jasmine.any(Number)); 

Poi eseguire un'operazione per le condizioni previste.