1

在我的 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');

在生产代码中一切正常。但是在测试中,创建的事件有零个待办事项作为关系,并且在确认它删除事件和恰好一个待办事项后。 错误信息

4

0 回答 0