在我的 Ember 应用程序中,您可以添加、编辑和删除事件和待办事项,并将待办事项与事件联系起来。后端是一个 Rails 应用程序。对于测试,我使用 Mirage。Mirage 中的模型具有以下关系:
//Mirage event
import { belongsTo, hasMany, Model } from 'ember-cli-mirage';
export default Model.extend({
user: belongsTo('user'),
todos: hasMany('todo')
});
//Mirage todo
import { belongsTo, Model } from 'ember-cli-mirage';
export default Model.extend({
user: belongsTo('user'),
event: belongsTo('event')
});
在我的验收测试中,我创建了一个用户,其中包含一个事件以及一些与事件和用户相关的待办事项。我访问事件页面并单击创建的事件。您也可以选择与事件相关的所有待办事项来删除它们。但在这种情况下,我只想删除没有连接 todos 的事件。然后我通过确认开始删除请求。
//acceptance test events-test.js
test('delete event without todo', function(assert) {
const user = server.create('user'),
event = server.create('event', {
user
}),
todos = server.createList('todo', 4, { user, event });
authenticateSession(this.application, {
id: user.id,
token: user.token
});
visit('/events');
andThen(function() {
assert.equal(find('td.fc-event-container').length, 5, 'There should be exactly one Event and four Todo');
assert.equal(currentURL(), '/events', 'currentURL should be /events');
click(find('td.fc-event-container a').eq(0));
andThen(function() {
click('button.delete');
andThen(function() {
click('button.confirm');
andThen(function() {
assert.equal(find('td.fc-event-container').length, 4, 'There should be exactly zero Events but four Todo');
assert.equal(currentURL(), '/events', 'currentURL should be /events');
});
});
});
});
});
config.js 中的删除路由:
//Mirage config.js
this.del('/events/:id');
在生产代码中一切正常。但是在测试中,创建的事件有零个待办事项作为关系,并且在确认它删除事件和恰好一个待办事项后。 错误信息