问题标签 [ember-cli-mirage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5515 浏览

ember.js - 从 Ember 数据返回承诺时出错

我正在开发我的第一个 Ember 应用程序,并让它显示我想要的方式,路由从以下位置返回静态 JSON 对象model()

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

这是我的index.js路线

如果我这样设置 Mirage config.js

然后我得到这个错误:

如果我这样设置 Mirage config.js

然后我得到这个错误:

编辑:

所以这不是解决问题的方法,但它让我克服了这个问题。我放弃了 Pretender 并根据这个优秀的教程重新开始创建一个实际的 Rails 服务器:http: //emberigniter.com/modern-bridge-ember-and-rails-5-with-json-api/

我能够以这种方式做我想做的一切,如果我想让它成为一个生产应用程序,我离得更近了。

0 投票
0 回答
596 浏览

ember-cli - 未调用路由时调试 Ember-cli-mirage

我已在 ember-cli-mirage 中成功创建了一条路线,但无法加载相关数据。

API 应该返回 JSON API 兼容的数据。

我不确定是否有任何好的方法可以调试 mirage 的请求拦截。这是我的 config.js

其中大部分工作正常(我认为)。我可以在工厂中创建机器和服务订单,并查看正在更新的 db 对象。但是,我的应用程序通常会调用 api 以获取服务订单://myserver/machines/:machine_id/service-orders,请求未被捕获,API 没有任何内容

编辑: 这是我的 Ember 应用程序用于 /machines/:machine_id/service-orders 的路线:

以及机器/展示的模型:

直观地说,我认为这machine.get('serviceOrders');会调用 API,而 Mirage 会拦截和处理该 API。似乎并非如此

0 投票
1 回答
173 浏览

ember.js - ember data 1.13.8 和 ember cli mirage 混淆

这是我的 Ember 检查员信息选项卡:

我正在使用 ember-cli-mirage,我在这里遇到了问题。

我无法获得模型的 belongsTo 关系。当我这样做时car.get('user'),我会得到一个结果的承诺,它会得到满足,但价值总是null

我的用户模型从“ember-data”导入 DS;

我的车型

我的海市蜃楼/配置

我得到了带有搜索颜色的汽车列表,但没有得到用户。它返回一个承诺,当它被完成时给出 null。

因为我使用的是 ember-data 1.13.8

我尝试使用这个Mirage 与 json 一起工作,但后来我得到错误 datum model is not defined 错误所以我猜新的 json api 不是我的问题,出于某种原因,我的 ember 数据使用旧的 json 格式并且原始配置有效。

我的汽车路线看起来像这样

我试过了

但我还是得到了console.log //undefined

我可以在返回的 json 中看到 user_id。

解决方案: 发现我正在保存关系的问题user_id = user.id.应该是user=user.id

0 投票
1 回答
548 浏览

ember.js - 带有 Mirage 的 Ember-CLI 给了我这个错误: Uncaught TypeError: Cannot read property 'destroyRecord' of undefined

我正在尝试使用 mirage 模拟服务器创建一个简单的 Ember-CLI 应用程序。我可以在数据库中插入和生成随机数据,但不能删除记录。

我的应用程序.hbs

在 application.js 我定义了动作

当我单击按钮时,我在 Ember 检查器中收到此错误:Uncaught TypeError: Cannot read property 'destroyRecord' of undefineddeleteContact @ application.js:18triggerEvent

0 投票
2 回答
2489 浏览

ember.js - 与 Ember CLI Mirage 的关系

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

我的模型是:

mountain.js

range.js

我的mirage/scenario/default.js文件如下所示:

这些是mirage/factories/range.jsmirage/factories/mountain.js文件:

这是在 Ember-CLI 中与 mirage 建立关系的正确方法吗?我还想在喜马拉雅页面(我已经创建了一条路线和一个模板)中显示属于喜马拉雅山脉的所有山脉。我怎样才能做到这一点?

提前致谢。

0 投票
1 回答
2639 浏览

ember.js - 使用 ember-cli-mirage 测试错误响应

我正在阅读 ember-cli-mirage 的有关创建模拟响应的文档,但无法弄清楚如何为完全相同的请求测试错误响应。例如:

看起来形成响应的唯一方法是在路线中

海市蜃楼建议如何进行此操作?

0 投票
1 回答
1673 浏览

javascript - 使用 ember-cli-mirage 失败的 Ember destroyRecord(或 deleteRecord 然后保存)

我想做的是将 ember-cli-mirage 集成到这个 todo 应用程序中,https://github.com/ember-cli/ember-cli-todos。此应用程序使用 Ember 2.0 或更高版本。设置:

  1. 克隆待办事项应用程序,然后 cd 进入应用程序目录。
  2. 外壳> npm安装
  3. 外壳>凉亭安装
  4. 外壳>余烬服务

我验证了该应用程序的工作方式与宣传的一样(除了与此处无关的一件小事)。我可以创建、更新和删除待办事项。待办事项应用程序使用 ember-data-fixture-adapter/FIXTURES 为应用程序提供数据。

我集成 ember-cli-mirage 的步骤是:

  1. 注释掉 app/models/todo.js 中的 Todo.reopenClass 块(创建 FIXTURES/seed 数据的代码)。
  2. 删除了 app/adapters 目录(仅包含一个文件 application.js(仅包含一行“export { default } from 'ember-data-fixture-adapter';”))。我相当确定这整个目录仅对 FIXTURES 设置有用。
  3. 外壳> ember 安装 ember-cli-mirage
  4. 按照此处的说明设置 ember-cli-mirage 部件 (app/mirage/{config.js,factories/post.js,scenarios/default.js}) http://www.ember-cli-mirage.com/docs/ v0.1.x/working-with-json-api/

如果有人需要查看它,我将发布 app/mirage/{config.js,factories/post.js,scenarios/default.js} 的代码,但它基本上只是 ember-cli-mirage 中说明的副本页面(将“用户”模型名称替换为“帖子”)。

我重新启动了 ember 服务器。除了删除待办事项外,一切正常。当您将指针移动到待办事项的右侧时,按下“x”按钮即可删除记录。我发现它在记录删除的 save() 部分失败了。删除记录的代码(使用“x”按钮界面)位于 app/components/todo-item/component.js 中,如下所示:

当我尝试删除一个待办事项时,浏览器控制台会打印“成功请求:DELETE /todos/n”(“n”是待办事项 ID),然后它会打印一条神秘的错误消息以及堆栈跟踪。

我注释掉了“todo.save();” 上面的线。当我删除一个待办事项时,删除仍然失败,但在控制台上,在“成功请求:删除 /todos/n”消息之后不再有错误消息。

所以我更改了上面的 removeTodo 代码,试图让错误信息更清晰。我把它改成这样:

我在这里和那里尝试了各种更改,但始终出现的错误消息是:

断言失败:适配器无法将新 id 分配给已有 id 的记录。有 id: 3 并且您尝试使用 undefined 对其进行更新。这可能是因为您的服务器返回数据以响应与您发送的 ID 不同的查找或更新。

我看到一条错误消息,上面有“normalizeserializer...”之类的文字,但我忘了复制整个消息。

我添加了一个适配器:

但这并没有解决问题。

顺便说一句,创建待办事项,也可以在待办事项上调用保存,可以正常工作。代码位于 app/components/todos-route/component.js 中:

0 投票
1 回答
838 浏览

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

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

我可以很好地在开发中使用海市蜃楼。我已经毫无问题地定义了工厂、路线、场景等。

问题是当我尝试在测试中创建模型时。下面的测试出错了:

这导致:

我应该在某个地方引导海市蜃楼吗?

0 投票
1 回答
398 浏览

javascript - Ember.js - 将 ember-cli-mirage 用于假模型时未找到模型

我正在使用本教程学习 ember.js 当使用 ember-cli-mirage 为这样的待办事项创建假模型时

我的海市蜃楼配置如下

我的困惑主要是模型。模型的名称是“todos”,而 ember 在处理单个记录时会以某种方式将其更改为“todo”。

从我的 todos 路线,我返回模型如下

路线/todos.js

然后我不明白上面的代码 - 教程说它应该是this.store.findAll(**'todo'**);但是不会将任何数据返回到 ember 控制台。我把它改成了'todos',我看到了一些输出。(最后输出)

在 routes/todos/index.js -- 我们返回 modelFor('todos')

并在模板中——todos/index.hbs

我了解 index 从 todos.hbs 的 {{outlet}} todos.hbs 获取此模型如下所示

当我运行此应用程序时,我收到以下错误。

Ember 检查器输出

在输出中,我从 / --> 上的 get 请求中获取数据,这是 todos 路由但我无法访问 todos/index 路由中的 todos。

谢谢您的帮助。所有代码片段均来自教程。

0 投票
1 回答
879 浏览

ember.js - queryRecord 返回一个类对象而不是我期望的记录

ember-cli-mirage用来存根 API,在配置中我有这个

在我的索引路线中,我有这样的模型挂钩设置

但这并没有从 mirage 中返回我的用户模型,当我将其转换为变量并将其记录到控制台时,我得到了一个类对象。