ember.js 使用方法调用对父路由进行Ember测试

ybzsozfc  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(171)

我是一个项目的“后端”,并要求帮助编写一个应用程序的测试。我是非常新的Ember,需要一点帮助开始。我们正在尝试提供路线的单元测试,所以我们可以有一个多一点的分子范围内的应用程序,而不是验收测试。我已经看了一些教程,并通过了每一个可能的情况,我能想到的。我只是需要一点跳跃开始。

以下是此路由的route.js的一部分。

  • 在这个父路由的下游,我们有另一个嵌套路由,它显示联系人列表,当用户点击显示按钮时,它调用“model”,并返回模板和url的变量“rec
export default Route.extend(ScrollTo, {
  flashMessages: service(),

  model: function(params) {
    let rec= this.store.peekRecord('contact', params.contact_id);
    return rec;
  },

  actions: {
    saveContact: function() {
      let model = this.currentRouteModel();
      model
        .save()
        .then(() => {
          //this.refresh();
          //this.setModelHash();
          this.flashMessages
            .success(`Saved Contact: ${model.get('title')}`);

          //this.transitionTo('contacts');
        });
    }

这里是测试的预生成代码。我真的没有做任何修改,因为我真的不知道从哪里开始。

  • 这个应用程序没有后端,它的设计是为了接收信息,并根据用户想要的任何标准提供一个iso文件。
  • 我确信我需要为测试提供一些模拟数据,并将其发送给方法,但我再次不确定我使用了哪些Qunit部分。
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';

module('Unit | Route | contact/show', function(hooks) {
  setupTest(hooks)

  test('it exists', function(assert) {
    var route = this.owner.lookup('route:contact/show');
    assert.ok(route, 'contact.show route works');
  });
});
qq24tv8q

qq24tv8q1#

当我第一次转向前端测试的时候,我也在这个问题上挣扎过。有了几年的经验,我有信心说你不应该用这种方式对路由对象进行单元测试。相反,一个ember应用的测试应该集中在两种类型的测试上。

  1. ember所说的集成测试(但实际上更接近于UI单元测试)
    1.验收测试
    组件上的Integration tests允许您进入更小的细节和边缘情况,它们可能是超级有价值的。
    我认为在这种情况下,您需要的实际上是一个acceptance test
    如果您的测试经验和我的完全一样,那么一开始会觉得您测试的东西太多了,但是这些类型的测试(浏览器实际加载整个应用程序)在查找bug方面最有价值,并且随着时间的推移最容易维护。

相关问题