2015-01-21 7 views
5

In meinem Programm, das ich zwei Zahlen bin Berechnung, und ich möchte sicherstellen, dass die Subtraktion von ihnen gleich 1Protractor - vergleichen Zahlen

dies ist der Code:

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

so weit ist es gut - Ich bekomme die Zahlen. das Problem kommt als nächstes:

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

Ich erhalte diese Fehlermeldung:

Expected NaN to equal 1. 

eine Idee?

Antwort

4

Sowohl firstCount und secondCount sind Versprechen die erforderlich sind, um gelöst werden:

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

Ich versuche immer noch, das Konzept der "Versprechen" zu verstehen, aber es funktioniert! Danke vielmals. – user2880391

0

möglich Es ist nur das erste Versprechen zu lösen. Winkelmesser passt expect an, um "Versprechungen" zu verstehen. Siehe https://github.com/angular/protractor/blob/master/docs/control-flow.md#protractor-adaptations und 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

Sie tun absolut richtig. Aber Vor dem Vergleich, überprüfen Sie, ob Ihr Ergebniswert ist der Zahlentyp oder nicht.

Beispiel-

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

dann wird eine Operation für die erwarteten Bedingungen durchzuführen.