Ember-CLI测试:请在适配器

时间:2015-10-04 23:03:10

标签: ember.js firebase ember-cli emberfire

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

  

错误:请在适配器上设置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 Data 1.13.8 - Firebase 2.3.0 - EmberFire 1.5.0 - jQuery 1.11.3

3 个答案:

答案 0 :(得分: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);
});

希望这有助于您的测试。

答案 1 :(得分:0)

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

$("#div1").load(
    "http://ppp.gkdsjfgk.com/wp-content/themes/thestory/compare-form-site.php?loanamt=" + 
    <?php echo $_POST['loanAmt']; ?> + "&occupation=" + 
    <?php echo $_POST['occupation']; ?> + "&rateType=" + 
    <?php echo $_POST['rateType']; ?> + "&age=" + 
    <?php echo $_POST['age']; ?> + "&city=" + 
    <?php echo $_POST['city']; ?> 
);

所以正确的答案是:

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

答案 2 :(得分:-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);
});

希望能帮到别人!