Frage

Nachfolgend dieses Beispiel Ich kann Tests mit der Expect-Syntax zum Laufen bringen, aber nicht mit der Should-Syntax.

Folgendes funktioniert:

var expect = chai.expect;
describe('expect syntax', function() {
    it('should work', function() {
        ...
        expect(promise).to.eventually.eql('something');
    });
});

Dies bedeutet jedoch nicht:

chai.should();
describe('should syntax', function() {
    it('should work', function() {
        ...
        (true).should.be.true;
        promise.should.eventually.eql('something');
    });
});

Da erhalte ich folgende Fehlermeldung: TypeError: Cannot read property 'eventually' of undefined Ich nehme das an sollen Erweitert wie üblich den Object-Prototyp, aber das gilt irgendwie nicht für das Webdriver-Promise-Object.Was ist hier falsch?

War es hilfreich?

Lösung

Nachfolgend mein Problem und das anderes Problem Was ich irgendwie übersehen habe, scheint die Ursache des Problems darin zu liegen, dass die Versprechen von webdriverjs auf Versprechen/A und Versprechen/B basieren, während chai-as-expected Versprechen vom Typ Promise/A+ erwartet.

Das Verpacken des websriverjs-Versprechens in ein Q-Versprechen löste das Problem:

Q(webdriverjspromise).should.eventually.eql('something')

Andere Tipps

Das funktioniert bei uns..

  var element = $('#mainDiv');      
  expect(element.isEnabled()).to.eventually.to.equal(true, "Expect Button to be enabled.");

Ich würde sicherstellen, dass das „Versprechen“ wirklich ein Versprechen ist, und funktioniert eql?Ich habe immer gleich verwendet.

Nebenbei bemerkt verwenden wir wie versprochen Gurke mit Chai und Chai, aber das sollte bei dem Versprechen keine Rolle spielen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top