Ho un ember-cli 0.2.7
utilizzando Ember.js 1.12.0
app con un pezzo di codice che assomiglia:Come testare String.prototype.includes in PhantomJS
controllers/cart.js
import Ember from 'ember';
export default Ember.Controller.extend({
footwearInCart: Ember.computed('[email protected]', function() {
return this.get('model').any(product => product.get('category').includes('Footwear'));
})
});
Passa attraverso tutti gli oggetti nel modello e restituisce true se la proprietà della categoria contiene "calzature".
sto cercando di testare in questo modo:
tests/unit/controllers/cart-test.js
import { moduleFor, test } from 'ember-qunit';
import Ember from 'ember';
var products = [Ember.Object.create({name: 'shoe', category: 'Footwear', subTotal: 10}), Ember.Object.create({name: 'shirt', subTotal: 20})];
var model = Ember.ArrayProxy.create({
content: Ember.A(products)
});
moduleFor('controller:cart', {
beforeEach() {
this.controller = this.subject();
}
});
test('footwearInCart property works', function(assert) {
this.controller.set('model', model);
assert.equal(this.controller.get('footwearInCart'), true, 'The footwearInCart function returns true if the category property of product in cart contains the word "Footwear"');
});
il codice funziona come dovrebbe quando si esegue l'applicazione, ma a quanto pare PhantomJS
non riconosce il metodo di .includes. (Il metodo è documentato qui String.prototype.includes()
Come posso ottenere PhantomJS per riconoscere il metodo .includes?
Grazie!
'includes' è implementato ora solo in Chrome. Il tuo codice non può funzionare in Firefox, Safari e IE così come in PhantomJS –
Gestito per farlo funzionare utilizzando un polyfill. Testato in FF, Safari e PhantomJS e ha funzionato. – zshnr