次のエラーが表示されますMirage: Your Ember app tried to GET '/statements', but there was no route defined to handle this request. Define a route that matches this path in your mirage/config.js file. Did you forget to add your namespace?
これは、単体テストで Mirage を使用しようとしているときです。私の受け入れテストはうまく機能し、レコードを問題なくロードしているようです。しかし、それはおそらく ember アプリ全体が受け入れテストのために起動されるためでしょうか?
私の設定が正しいと確信しています.testConfigをエクスポートして設定しました:
export function testConfig() {
this.urlPrefix = 'http://0.0.0.0:3000'
this.get('/languages', languages)
this.get('/statements', statements)
現在のコードは次のとおりです。
//services/fake.js
import Ember from 'ember'
const { Service, A, inject: { service } } = Ember
export default Service.extend({
store: service(),
statements: A(),
loadFakeStatement(){
this.get('statements').addObject(Ember.Object.create({
title: 'Statement 1',
option: 'A'
}))
},
loadRealStatements(){
this.get('store')
.findAll('statement')
.then(statements => {
this.get('statements').addObjects(statements)
})
}
})
// tests/unit/services/fake-test.js
import { moduleFor, test } from 'ember-qunit'
import startMirage from '../../helpers/setup-mirage-for-integration'
moduleFor('service:fake', 'Unit | Service | fake', {
needs: ['model:statement'],
beforeEach() {
startMirage(this.container)
},
afterEach() {
window.server.shutdown()
}
})
test('initializes correctly', function(assert) {
const service = this.subject()
assert.ok(service)
})
test('loads fake data correctly', function(assert) {
const service = this.subject()
assert.equal(service.get('statements.length'), 0, 'statements initially 0')
service.loadFakeStatement()
assert.equal(service.get('statements.length'), 1, 'statements populated by load')
})
test('loads mirage data correctly', function(assert) {
const service = this.subject()
assert.equal(service.get('statements.length'), 0, 'statements initially 0')
service.loadRealStatements()
assert.equal(service.get('statements.length'), 1, 'statements populated by load')
})