0

我有一个带有 Ember-CLI 并使用 Firebase 的 Ember.js 应用程序。当我运行 /tests 时,我得到的唯一错误如下:

错误:请firebase在适配器上设置属性。在初始化(http://localhost:4200/assets/vendor.js:99854:15)(...等)

我的 application.js 适配器代码是 emberfire 安装后的标准:

import Ember from 'ember';
import FirebaseAdapter from 'emberfire/adapters/firebase';

const { inject } = Ember;

export default FirebaseAdapter.extend({
  firebase: inject.service(),
});

我的 firebase: URL 是在 environment.js 文件中设置的。谁能指出问题可能出在哪里?应用程序本身运行良好。我意识到这是 emberfire 的 init 函数中内置的错误响应,但这对我没有帮助!我敢肯定,对于初学者来说,这一定是小而明显的事情,但我仍在学习曲线上……

提前致谢。

Ember 1.13.7 - Ember 数据 1.13.8 - Firebase 2.3.0 - EmberFire 1.5.0 - jQuery 1.11.3

4

3 回答 3

2

我认为needs在这种情况下使用属性指定缺少的单元更合适,因为适配器无法注入 Firebase 服务。

import { moduleFor, test } from 'ember-qunit';

moduleFor('adapter:application', 'Unit | Adapter | application', {
  // Specify the other units that are required for this test.
  needs: ['service:firebase']
});

// Replace this with your real tests.
test('it exists', function(assert) {
  let adapter = this.subject();
  assert.ok(adapter);
});

希望这对您的测试有所帮助。

于 2015-11-18T07:47:31.160 回答
0

您还必须注入配置,因为 firebase 服务需要配置。

export default {
  create(application) {
    const config = getOwner(application)._lookupFactory('config:environment');

所以正确答案是:

import { moduleFor, test } from 'ember-qunit';

moduleFor('adapter:application', 'Unit | Adapter | application', {
  // Specify the other units that are required for this test.
  needs: ['service:firebase', 'config:environment']
});

// Replace this with your real tests.
test('it exists', function(assert) {
  let adapter = this.subject();
  assert.ok(adapter);
});
于 2016-10-07T13:27:31.027 回答
-1

我通过将 tests/unit/adapters/application-test.js 文件修改为:

import { moduleFor, test } from 'ember-qunit';
import FirebaseAdapter from 'emberfire/adapters/firebase';

moduleFor('adapter:application', 'Unit | Adapter | application', {
  // Specify the other units that are required for this test.
  // needs: ['serializer:foo']
});

// Replace this with your real tests.
test('it exists', function(assert) {
  var adapter = FirebaseAdapter; //this.subject();
  assert.ok(adapter);
});

希望对其他人有所帮助!

于 2015-10-06T23:30:32.797 回答