【问题标题】:How to test an ember.js engine route without the ember/no-restricted-resolver-tests eslint error?如何在没有 ember/no-restricted-resolver-tests eslint 错误的情况下测试 ember.js 引擎路由?
【发布时间】:2019-10-01 14:49:13
【问题描述】:

我的 ember.js 应用使用名为 user-backoffice 的可在 repo 中安装的引擎。

这个引擎提供了一个名为my-engine-route的路由,这里是它的单元测试,位于my-app/lib/user-backoffice/test-support/unit/my-engine-route/route-test.js

import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import engineResolverFor from 'ember-engines/test-support/engine-resolver-for';

const modulePrefix = 'user-backoffice';
const resolver = engineResolverFor(modulePrefix);

module('[user-backoffice] Unit | Route | my-engine-route', function(hooks) {
  setupTest(hooks, {resolver});

  test('it exists', function(assert) {
    let route = this.owner.lookup('route:my-engine-route');
    assert.ok(route);
  });
});

engineResolverFor 部分取自ember-engine.com docs

我的问题是由于ember/no-restricted-resolver-tests 规则,此代码会生成一个 eslint 错误。

my-app/lib/user-backoffice/test-support/test-support/unit/my-engine-route/route-test.js
  9:20  error  Do not use setupTest whose last parameter is an object unless used in conjunction with `integration: true`  ember/no-restricted-resolver-tests

在我看来,eslint 规则和 ember-engine 文档是矛盾的,所以我想知道是否应该在引擎的上下文中禁用该规则,或者是否应该更新 ember-engine.com 文档.

编辑

@villander 在emberjs Discord #ember-engines 频道建议,这可能与我在项目中使用的 ember 版本有关,确实有点旧:3.8。

这里有一个 repo 可以复制:https://github.com/bartocc/stackoverflow-question-58007416

【问题讨论】:

    标签: ember.js eslint


    【解决方案1】:

    @jul 不要以对象形式发送第二个参数,例如将其包裹在 {} 中。

    setupTest(钩子,解析器); //这应该可以解决你的问题

    【讨论】:

    • 传递给setupTest 的第二个参数必须是选项对象,所以setupTest(hooks, {resolver}); 恕我直言。
    • 你测试我的回答了吗? @七月
    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多