【发布时间】:2018-07-05 13:52:59
【问题描述】:
使用最新的 Ember (3.2)、ember-cli-mirage 0.4.7、ember-cli-qunit 4.3.2、ember-qunit 3.4.1
我正在使用 ember-cli-mirage 进行前端测试,我无法解决这个错误:
Uncaught TypeError: template.getProperties is not a function
我在组件测试中运行它:
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
module('Integration | Component | template-editor', function(hooks) {
setupRenderingTest(hooks);
setupMirage(hooks);
test('it renders', async function(assert) {
const mockTemplate = server.create('template');
this.set('mockTemplate', mockTemplate);
await render(hbs`{{template-editor template=mockTemplate}}`);
assert.equal(this.get('template.name'), 1);
});
});
而我的组件JS文件的相关部分是这样的:
export default Component.extend({
init () {
this._super(...arguments);
let template = this.get('template');
if ( template ) {
let oldProperties = template.getProperties('body','subject');
this.set('oldProperties',oldProperties);
}
}
});
看起来海市蜃楼模型不是我的真实代码所期望的对象,它是一个 Ember 模型。
到目前为止,我似乎一直遵循文档,因为这是非常基本的,这里有什么我遗漏的吗?
我设置 mirage 的方式只是为模板创建一个 mirage 工厂并在配置中为其添加路由:
// mirage/config.js
this.get('/templates');
this.get('/templates/:id');
// mirage/factories/template.js
import { Factory, faker } from 'ember-cli-mirage';
export default Factory.extend({
subject: faker.lorem.sentence,
insertDatetime: faker.date.past,
body: faker.lorem.paragraphs
});
【问题讨论】: