Ich habe eine Komponente, die this.get('model.property')
verwendet, und es funktioniert wie vorgesehen.Ember.js + Mirage: eine verhasste Beziehung in Integrationstest
Für meine Integrationstests ich Mirage bin mit, die für alle meine anderen Tests (Integrationstests enthalten), aber gearbeitet hat, als ich diese bestimmte Komponente testen ich:
TypeError: Cannot read property 'then' of undefined
Dies ist, was mein Test wie folgt aussieht:
import { moduleForComponent, test } from 'ember-qunit'
import hbs from 'htmlbars-inline-precompile'
import { startMirage } from 'app/initializers/ember-cli-mirage'
import Ember from 'ember'
moduleForComponent('summary-card', 'Integration | Component | summary card', {
integration: true,
beforeEach() {
this.server = startMirage()
},
afterEach() {
this.server.shutdown()
}
})
test('it renders', function(assert) {
const customer = this.server.create('customer')
const location = this.server.create('location', { customer })
const manufacturer = this.server.create('manufacturer')
const model = this.server.create('device-model', { manufacturer })
this.server.createList('device', 5, { model, customer, location })
const loc = Ember.Object.create(location)
this.set('model', loc)
this.render(hbs`{{summary-card model=model model-name=model.name tag='location' belongs-to='customer' has-many='device'}}`);
assert.equal(this.$('h1').text().trim(), 'Location 0', 'should be titled Location 0')
});
Und im Grunde, mein summary-card.js
so etwas wie dieses hat:
this.get('model.' + belongs).then(relationship => {...})
Dabei ist belongs
einfach der Wert von allem, auf den belongs-to
eingestellt ist, wenn die Komponente aufgerufen wird.
Ich bin ein wenig verwirrt, da es scheint, dass das Modell, das ich an meinen Test übergebe, nicht wirklich das Modell auf die gleiche Weise darstellt wie bei der Ausführung ember s
(Ich benutze Mirage für Entwicklungszwecke auch). Gibt es irgendwo wo ich mehr darüber erfahren kann, was genau dort vor sich geht?
Vielen Dank!
P.S. Ich habe auch das location
Objekt zu verwenden versucht, wie von server.create()
zur Verfügung gestellt, und ich bekomme eine etwas andere Fehler:
TypeError: _this.get(...).then is not a function