Wie man String.prototype.includes in PhantomJS testet

8

Ich habe eine ember-cli 0.2.7 mit Ember.js 1.12.0 app mit einem Code, der wie folgt aussieht:

controllers/cart.js

%Vor%

Er durchläuft alle Objekte im Modell und gibt "true" zurück, wenn die Kategorieeigenschaft "footwear" enthält.

Ich versuche es so zu testen:

tests/unit/controllers/cart-test.js

%Vor%

Der Code funktioniert so wie er sollte, wenn ich die App starte, aber PhantomJS erkennt die .includes-Methode offenbar nicht. (Die Methode ist hier dokumentiert. String.prototype.includes ()

Wie kann ich PhantomJS dazu bringen, die .includes-Methode zu erkennen?

Danke!

    
zshnr 11.07.2015, 18:36
quelle

3 Antworten

8

Scheinbar implementiert PhantomJS die ES6-Funktionen nicht ordnungsgemäß. Glücklicherweise ist String.prototype.includes relativ einfach zu füllen. Sie können wählen, ob Sie das in der Testsuite oder dem Controller tun möchten. Der Polyfill-Code lautet:

%Vor%

Entweder direkt vor dem Aufruf assert (Sie möchten vielleicht ein Flag verwenden, um sich an Sie zu erinnern, haben das Polyfill hinzugefügt und nach dem assert entfernt), oder Sie tun es im Modul selbst vor oder nach dem export block.

    
Amit 11.07.2015, 19:48
quelle
6

Obwohl die ausgewählte Antwort richtig ist, ist es meiner Meinung nach bemerkenswert, dass das Hinzufügen zu dem spezifischen Test für die meisten Apps nicht gut genug ist; Ich würde vorschlagen, ein vendor/phantom-js-polyfills.js zu erstellen, das dieses Polyfill enthält (plus alle anderen, die auf der ganzen Linie auftauchen) und dann innerhalb Ihres ember-cli-build.js können Sie es unter folgender Bedingung laden:

%Vor%     
gcoladarci 13.08.2015 18:05
quelle
-1

Ich habe kürzlich das folgende Polyfill verwendet, das den Job erledigt hat.

Ссылка

    
lipka 15.08.2016 08:13
quelle