Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Ember cli:模型的关系单元测试失败_Unit Testing_Ember.js_Ember Data_Qunit - Fatal编程技术网

Unit testing Ember cli:模型的关系单元测试失败

Unit testing Ember cli:模型的关系单元测试失败,unit-testing,ember.js,ember-data,qunit,Unit Testing,Ember.js,Ember Data,Qunit,我正在使用Ember cli和qunit进行测试 项目模型 import DS from 'ember-data'; var attr = DS.attr, belongsTo = DS.belongsTo; export default DS.Model.extend({ offer: belongsTo('offer'), }); 这里我添加了测试项目和报价模型之间的关系 项目测试 import Ember from "ember"; import DS from "embe

我正在使用Ember cli和qunit进行测试

项目模型

import DS from 'ember-data';
var attr = DS.attr,
    belongsTo = DS.belongsTo;

export default DS.Model.extend({
  offer: belongsTo('offer'),
});
这里我添加了测试项目和报价模型之间的关系

项目测试

import Ember from "ember";
import DS from "ember-data";
import { test, moduleForModel } from 'ember-qunit';

moduleForModel('item', 'Item Model', {
  needs: ['model:item']
});

test('offer relationship', function() {
  var relationships = Ember.get(App.Item, 'relationships');
  deepEqual(relationships.get(App.Offer), [
    { name: 'offer', kind: 'belongsTo' }
  ]);
});
错误跟踪:

Died on test #1     at test (http://localhost:4200/assets/vendor.js:73836:13)
    at eval (goodcity/tests/unit/item-test.js:44:5)
    at requireModule (http://localhost:4200/assets/vendor.js:54:29)
    at http://localhost:4200/assets/test-loader.js:14:29: App is not defined
Source:     
ReferenceError: App is not defined
    at Object.eval (goodcity/tests/unit/item-test.js:45:37)
    at Object.wrapper (http://localhost:4200/assets/vendor.js:73824:31)
    at Object.Test.run (http://localhost:4200/assets/qunit.js:203:18)
    at http://localhost:4200/assets/qunit.js:361:10
    at process (http://localhost:4200/assets/qunit.js:1453:24)
    at http://localhost:4200/assets/qunit.js:479:5

我遗漏了什么吗?

我刚刚在将旧的Ember应用程序转换为新的Ember cli的过程中遇到了类似的情况。由于Ember CLI使用ES6模块语法,因此无法直接访问App对象上的任何内容

您将需要从对象各自的模型文件中导入对象

import Item from "<modulePrefix>/models/item";
import Offer from "<modulePrefix>/models/offer";
import Ember from "ember";
import { test, moduleForModel } from 'ember-qunit';
/* Import Models */
import Item from "stackoverflow/models/item";
import Offer from "stackoverflow/models/offer";

moduleForModel('item', 'Item', {
  // Item needs the offer model.
  needs: ['model:offer']
});

test('offer relationship', function() {
  /* For some reason this was necessary to prime the store. */
  /* Without this line I get the error:  
     'undefined' is not an object (evaluating 'store.modelFor') */
  var model = this.subject();

  /* App.Item -> Item, App.Offer -> Offer */
  var relationships = Ember.get(Item, 'relationships');
  deepEqual(relationships.get(Offer), [
    { name: 'offer', kind: 'belongsTo' }
  ]);
});