标签: ember-cli-mirage

与Ember CLI Mirage的关系

我是Ember的新手,我正在尝试创建一个简单的应用程序,我有2个模型,山脉和山脉.范围有许多山脉,而山脉属于一个范围.我想在他们之间建立一种关系.我在网上搜索过,但我发现了不同的解释,我仍然在努力解决这个问题.

我的模特是:

mountain.js

import DS from 'ember-data';
export default DS.Model.extend({
    name: DS.attr('string'),
    altitude: DS.attr('number'),
    range: DS.belongsTo('range', {async: true})
});
Run Code Online (Sandbox Code Playgroud)

range.js

import DS from 'ember-data';
export default DS.Model.extend({
    name: DS.attr('string'),
    length: DS.attr('number'),
    mountains: DS.hasMany('mountain', {async: true})
});
Run Code Online (Sandbox Code Playgroud)

我的mirage/scenario/default.js文件看起来像这样:

export default function(server) 
{
    var himalaya = server.create('range', {id: 1, name:'Himalaya', length:'16598' });
    var karakorum = server.create('range', {id: 2, name:'Karakorum', length:'34801' });

    var everest = server.create('mountain', {id:1, name: 'Everest', altitude: '8871', range_id:1 });
    var K2 = server.create('mountain', {id:2, name: 'K2', altitude: …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-cli ember-cli-mirage

7
推荐指数
1
解决办法
2012
查看次数

如何在ember-cli-mirage中建立关系?

我正试图在Ember-Cli-Mirage中建立关系.这可能是一种简单的方式,还是我必须使用固定装置而不是工厂?

这些将是我的模型:

任务:

export default DS.Model.extend({
  taskName: DS.attr('string'),
  team: DS.hasMany('team', {async: true}),
  taskScore: DS.hasMany('taskScore', {async: true})
});
Run Code Online (Sandbox Code Playgroud)

球队:

import DS from 'ember-data';

export default DS.Model.extend({
  teamName: DS.attr('string'),
  task: DS.hasMany('task'),
  taskScore: DS.hasMany('taskScore', {async: true})
});
Run Code Online (Sandbox Code Playgroud)

TASKSCORE:

import DS from 'ember-data';

export default DS.Model.extend({
    score: DS.attr('number'),
    team: DS.belongsTo('team'),
    task: DS.belongsTo('task'),
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-cli-mirage

6
推荐指数
1
解决办法
1891
查看次数

从ember中移除ember-cli-mirage

我正在使用ember-cli-mirage来满足请求.因为我有我的rails api来满足这些要求,我如何从我的余烬中删除或卸载ember-cli-mirage?

如果要删除mirage文件夹,我会收到构建错误!

ember-cli-mirage ember-cli-rails

6
推荐指数
1
解决办法
1798
查看次数

如何在Mirage中模拟二进制响应

使用Mirage我需要模拟我的GET请求,该请求以二进制字符串的形式返回数据(格式为gzip).这是我第一次使用海市蜃楼,我不知道我是否在嘲笑二元响应,我应该返回一个有效值吗?这是我现在如何嘲笑它.

  this.get('/myproxy/api/v1/network/download', function (db, request) {
    let responseBlob = new window.Blob(['To be replaced with my actual binary data'], {type: 'application/octet-stream'})
    return new Response(
      200,
      {'content-disposition': "attachment; filename=network.myextension; filename*=UTF-8''network.myextension"},
      responseBlob
    )
  })
Run Code Online (Sandbox Code Playgroud)

这是我的场景:在收到来自后端的响应后,我只是将repose转换为blob并将其下载为文件.如果我在模拟数据时应该创建有效的二进制数据,我该如何使用海市蜃楼?我应该将它作为文件存储在某处并将其用作模拟响应吗?如果有人可以帮助我,我感激不尽.

ember.js ember-testing ember-cli-mirage

6
推荐指数
1
解决办法
287
查看次数

从Ember Data返回承诺时出错

我正在开发我的第一个Ember应用程序并让它以路径返回静态JSON对象来显示我想要的方式model():

element: {
  name: "First Element",
  divisions: [{
    name: "First Division",
    sets: [{name: "Set 1"},{name: "Set 2"},{name: "Set 3"}]
  }, {
    name: "Second Division",
    sets: [{name: "Set 1"},{name: "Set 2"},{name: "Set 3"}]
  }]
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试重构使用Ember Data + Mirage并且度过了一段糟糕的时光.

这是我的index.js路线

export default Ember.Route.extend({
    model() {
        return this.store.find('element', 1);
    },
Run Code Online (Sandbox Code Playgroud)

如果我config.js像这样设置我的幻影:

  this.get('/elements', function() {
    return {
      elements: [
          {
            id: 1,
            name: 'First Element',
            divisions: [1, 2]
          }
      ]
    }
  });
Run Code Online (Sandbox Code Playgroud)

然后我收到这个错误:

Your Ember app tried …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli-mirage

5
推荐指数
1
解决办法
4937
查看次数

Ember.JS - 尝试反转记录集合时出现“TypeError: internalModel.getRecord 不是函数”

--使用 Ember 数据 2.7.1--

我试图颠倒记录集合的顺序,而无需先使用 toArray() 将它们转换为数组。这个对象集合来自 this.store.findAll('history-item') 返回的 promise。

我想以 ember 的方式做到这一点,而不是让它们成为普通的 javascript。我收到来自 record-array.js 的 TypeError: internalModel.getRecord。出于某种原因,当它尝试执行 objectAtContent() 时,它正在查看的内容似乎没有类型。通过堆栈跟踪,我可以看到我正在处理的对象是 [Class],类是历史项目模型。在 objectAtContent() 之前的一些堆栈调用,正在处理的对象从那个历史项目模型切换到其他没有类型属性的 Class 对象。

我能够使用 Ember Inspector 正确查看我的数据,如果我只是在我的模板上显示原始记录集合,它会正确显示。

有没有人遇到过这个?

一些想法和考虑:

- findAll() 如何使用它的承诺,因为它在后台重新加载而不允许逆转,这有什么特别之处吗?我确实希望它继续重新加载实时数据。

-我正在使用 ember-cli-mirage 来模拟我的数据库和端点,并且我已经按照我认为的信件中的说明进行操作。我将未配置的 JSONAPISerializer 用于海市蜃楼,并使用未配置的 JSONAPIAdapter 用于 ember。它与从后面发送的元数据有什么关系吗?它可能与未设置的模型或记录有关吗?我有什么特别的事情要做吗?

定义模型并尝试反转它的路由段:[注意:我知道在路由中准备数据(排序)可能不是惯例,但为了便于描述,我只是把它放在这里。我通常在控制器或组件的外部进行]

  model(){
    return this.get('store').findAll('history-item').then(function(items){
      return items.reverseObjects();
    }).catch(failure);
Run Code Online (Sandbox Code Playgroud)

历史列表模型声明:

  export default DS.Model.extend({
    question: DS.attr('string'),
    answer: DS.attr('string')
  });
Run Code Online (Sandbox Code Playgroud)

Ember-Cli-Mirage config.js 端点:

  this.get('/history-items', (schema) => {
     return schema.historyItems.all();
  });
Run Code Online (Sandbox Code Playgroud)

历史项目的 Ember-Cli-Mirage 固定装置:

  export default [
    {id: 1, question: "1is this working?", …
Run Code Online (Sandbox Code Playgroud)

promise ember.js ember-data ember-cli ember-cli-mirage

5
推荐指数
1
解决办法
1509
查看次数

Mirage“直通”不起作用

我正在尝试在此 Ember项目中对 POST 请求使用直通

this.passthrough('/thirdeye/entity?entityType=ANOMALY_FUNCTION');
Run Code Online (Sandbox Code Playgroud)

这就是调用的样子app/mirage/config.js。我收到以下错误:

Mirage: Your Ember app tried to POST '/thirdeye/entity?entityType=ANOMALY_FUNCTION',
but there was no route defined to handle this request.
Define a route that matches this path in your
mirage/config.js file. Did you forget to add your namespace?
Run Code Online (Sandbox Code Playgroud)

显然,我已将该调用添加到配置文件中,但它没有被拾取。我读到这只passthrough适用于>= jquery 2.x我的项目。

有谁知道还有什么可能导致这种情况?

javascript ember.js ember-cli-mirage

2
推荐指数
1
解决办法
2725
查看次数

Ember Mirage没有将模型作为余烬对象传递

使用最新的Ember(3.2),ember-cli-mirage 0.4.7,ember-cli-qunit 4.3.2,ember-qunit 3.4.1

我正在使用ember-cli-mirage来尝试前端测试,我无法解决这个错误:

Uncaught TypeError: template.getProperties is not a function
Run Code Online (Sandbox Code Playgroud)

我在组件测试中运行它:

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

  test('it renders', async function(assert) {
    const mockTemplate = server.create('template');
    this.set('mockTemplate', mockTemplate);
    await render(hbs`{{template-editor template=mockTemplate}}`);
    assert.equal(this.get('template.name'), 1);
  });
});
Run Code Online (Sandbox Code Playgroud)

我的组件JS文件的相关部分是这样的:

export default Component.extend({
    init () {
        this._super(...arguments);
        let template = this.get('template');
        if …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-cli-mirage

2
推荐指数
1
解决办法
340
查看次数

Ember DS.Store.findAll()返回空集合

嘿,我需要修改一些从DataStore获取的记录.如果我在路由器中添加以下代码,我可以看到请求传递给我的模板,但我无法修改集合的每个请求,因为集合是空的.

model() {
  return this.store.findAll('user').then(function(users) {
    console.log(users.get('length')); // 0
    return users;
  });
}
Run Code Online (Sandbox Code Playgroud)

我认为当从服务器获取所有记录时,promise会得到解决,但事实并非如此.或者我完全错过了什么.

我还尝试使用相同的结果修改afterModel回调中的模型.

我正在使用Ember 1.13.0(使用Ember-CLI),Ember-Data 1.13.4和ember-cli-mirage来模拟我的HTTP请求.

更新: 我设法为此问题创建了一个解决方法.在我的控制器中,我创建了一个新属性,它监听模型.@ each然后我能够修改模型并将其传递给视图.

export default Ember.Controller.extend({
  users: function() {
    return this.get('model.users').filter(function(user) {
      // The Promise is resolved twice
      // The first time with an empty model and the second time with 
      // the actual data. So I filter the empty model. 
      return user.get('id');
    }).map(function(user) {
      // do fancy stuff with our user
      return user
    });
  }.property('model.@each')
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli-mirage

1
推荐指数
1
解决办法
3281
查看次数

在ember-cli-mirage测试中使用服务器变量

我试图在我的测试中使用ember-cli-mirage但遇到问题.我正在使用ember和ember-data 2.1.0,因此可能与此有关.

我可以在开发中使用海市蜃楼.我已经定义了工厂,路线,方案等没有问题.

问题是当我尝试在测试中创建模型时.以下测试错误:

import Ember from 'ember';
import { module, test } from 'qunit';
import startApp from 'frontend/tests/helpers/start-app';

let application;

module('Acceptance | Customer', {
  beforeEach() {
    application = startApp();
  },

  afterEach() {
    Ember.run(application, 'destroy');
  }
});

test('viewing customers', function(assert) {
    server.createList('customer', 2);
    visit('/admin/customers');
    andThen(() => assert.equal(find('#customers-table tbody tr').length, 2));
});
Run Code Online (Sandbox Code Playgroud)

这导致:

not ok 1 PhantomJS 1.9 - Acceptance | Customer: viewing customers
    ---
        actual: >
            null
        message: >
            Died on test #1     at http://localhost:7357/assets/test-support.js:3124
                at http://localhost:7357/assets/frontend.js:2434
                at http://localhost:7357/assets/vendor.js:150
                at …
Run Code Online (Sandbox Code Playgroud)

ember-cli-mirage

1
推荐指数
1
解决办法
795
查看次数