Ember.js 如何在Ember 3.2测试中加载自定义测试帮助程序?

Ember.js 如何在Ember 3.2测试中加载自定义测试帮助程序?,ember.js,ember-testing,Ember.js,Ember Testing,我似乎缺少一些关于如何在Ember 3.2中注册测试助手的信息,正在寻找一些指导: 我正在尝试使用一个test helper(),我已将它放在我的tests/helpers目录中,并试图在测试中引用它: import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { render } from '@ember/test-helpers'; import hbs fro

我似乎缺少一些关于如何在Ember 3.2中注册测试助手的信息,正在寻找一些指导:

我正在尝试使用一个test helper(),我已将它放在我的
tests/helpers
目录中,并试图在测试中引用它:

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 | my-component', function(hooks) {
  setupRenderingTest(hooks);
  setupMirage(hooks);

  test('it renders nothing by default', async function(assert) {
    const company = server.create('company');
    this.pushMirageRecordsToStore(); // this doesn't work
    await render(hbs`{{my-component}}`);

    assert.equal(this.element.textContent.trim(), '');

  });
调用此.pushMirageRecordsToStore()时,错误为:

TypeError: this.pushMirageRecordsToStore is not a function
这让我相信链接中的
registerAsyncHelper
helper没有被调用


我的问题是如何使Ember测试框架在该测试助手中调用registerAsyncHelper,以便执行
此操作

如果您正在注册一个测试助手并调用它
pushMirageRecordsToStore
,那么它应该作为一个全局文件提供,以便您能够在测试中以
pushMirageRecordsToStore()的身份访问它
,而不是
这个.pushMirageRecordsToStore()

在ember文档中有关于注册测试助手的好文档


p、 仅为确认,您在链接中共享的帮助程序名为
pushMirageDbIntoStore
,但此处您调用
pushMirageRecordsToStore
。名称必须相同:-)

哈哈,是的,我确实重命名了它:)我尝试过将函数作为全局函数调用,比如pushMirageRecordsToStore(),但我收到一个错误,说“无法在未定义时调用函数模式”,这意味着我必须传入服务器和存储参数。这让我相信注册异步助手的调用没有被调用?你能调用它并传递
服务器
存储
参数吗?事实上,你从
pushMirageRecordsToStore
内部得到了错误,这让我认为它正在被调用并且正在正确注册:-)是的,它正在被调用,但是当它构建参数时,这个错误不表明它不是从RegisterSynchelper调用的吗?我当然可以用params来调用它,但这会使registerAsyncHelper变得多余,这就是我想弄明白的:我不确定我是否理解
registerAsyncHelper
使其在测试中全局可用。它将函数注册为全局函数。也许你可以编一个我可以看的玩具?