Ember.js + Mirage:在集成测试中拉取模拟关系

2024-04-26

我有一个使用的组件this.get('model.property'),并且它按预期工作。

对于我的集成测试,我使用 Mirage,它适用于我的所有其他测试(包括集成测试),但是当我测试这个特定组件时,我得到:

TypeError: Cannot read property 'then' of undefined

这就是我的测试的样子:

import { moduleForComponent, test } from 'ember-qunit'
import hbs from 'htmlbars-inline-precompile'
import { startMirage } from 'app/initializers/ember-cli-mirage'
import Ember from 'ember'

moduleForComponent('summary-card', 'Integration | Component | summary card', {
  integration: true,
  beforeEach() {
    this.server = startMirage()
  },
  afterEach() {
    this.server.shutdown()
  }
})

test('it renders', function(assert) {
  const customer = this.server.create('customer')
  const location = this.server.create('location', { customer })
  const manufacturer = this.server.create('manufacturer')
  const model = this.server.create('device-model', { manufacturer })
  this.server.createList('device', 5, { model, customer, location })

  const loc = Ember.Object.create(location)
  this.set('model', loc)
  this.render(hbs`{{summary-card model=model model-name=model.name tag='location' belongs-to='customer' has-many='device'}}`);

  assert.equal(this.$('h1').text().trim(), 'Location 0', 'should be titled Location 0')

});

基本上,我的summary-card.js有这样的东西:

this.get('model.' + belongs).then(relationship => {...})

where belongs就是任何事物的价值belongs-to被设置为当组件被调用时。

我有点困惑,因为我传递给测试的模拟模型似乎并没有像运行时那样真正代表模型ember s(我也将 Mirage 用于开发目的)。有什么地方可以让我了解更多有关那里到底发生了什么的信息吗?

谢谢你!


附:我也尝试过使用location对象由以下提供server.create(),我得到了一个略有不同的错误:

TypeError: _this.get(...).then is not a function


嗯,通过阅读这个答案 https://stackoverflow.com/a/38525930/543423,我设法找到了自己的解决方案,效果非常好:

import { moduleForComponent, test } from 'ember-qunit'
import hbs from 'htmlbars-inline-precompile'
import Ember from 'ember'

moduleForComponent('summary-card', 'Integration | Component | summary card', {
  integration: true
})

test('it renders', function(assert) {
  this.inject.service('store', {as: 'store'})
  let location

  Ember.run(() => {
    location = this.store.createRecord('location', {
      id: 0,
      name: 'Location 0',
      customer: this.store.createRecord('customer', {
        id: 1,
        name: 'Customer 0'
      }),
      devices: [this.store.createRecord('device', {id: 1})]
    })
  })

  this.set('model', location)
  this.render(hbs`
    {{#summary-card model=model model-name=model.name tag='location' belongs-to='customer' has-many='device'}}
      <div class='test-content'>Test Content</div>
    {{/summary-card}}
  `)

基本上,我选择直接使用商店,而不是使用 Mirage,而且它有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ember.js + Mirage:在集成测试中拉取模拟关系 的相关文章

  • 如何对我的自定义验证属性进行单元测试

    我有一个自定义的 asp net mvc 类验证属性 我的问题是如何对其进行单元测试 测试类是否具有该属性是一回事 但这实际上并不能测试其中的逻辑 这就是我想测试的 Serializable EligabilityStudentDebtsA
  • 在 Angular 单元测试中应该如何处理运行块?

    我的理解是 当您在 Angular 单元测试中加载模块时 run块被调用 我认为如果你正在测试一个组件 你不会想同时测试run块 因为unit测试应该只是测试一个unit 真的吗 如果是的话有什么办法可以防止run阻止运行 我的研究让我认为
  • 如何在 Go 中将环境变量传递给测试用例

    在为 Go 编写测试用例时 传递需要提供给测试的环境变量的标准方法是什么 例如 我们不想在测试用例的源代码中嵌入密码 处理这个问题最标准的方法是什么 我们让测试用例寻找配置文件吗 还有别的事吗 看来我偶然发现了答案 将其添加到测试用例中可以
  • 如何检查带有通配符的模拟调用?

    我正在编写单元测试 并且想要检查具有函数对象的调用 如下所示 call u mock u foobar
  • 使用 Moq 测试接受委托的方法

    我的代码正在使用一个实现这样的接口的组件 public interface IFoo void DoSomething string p1 void DoSomething string p1 Action
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 单元测试报告的 XML 格式规范(DTD、XSD..)

    许多工具为单元测试报告生成和使用相同的 XML 文件格式 例子 source http junitpdfreport cvs sourceforge net junitpdfreport src resources examples tes
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • Python 是否有首选的 BDD 风格单元测试框架?

    我想知道是否有任何 BDD 风格的 描述它 Python 单元测试框架可以维护并准备好投入生产 我已经发现describe https pypi python org pypi describe 0 1 2 但似乎没有维护 也没有文档 我也
  • PyUnit 中是否已弃用测试套件?

    按照 PyUnit 中的示例 我想出了以下运行良好的单元测试代码 import unittest class Board def init self x y self x x self y y def eq self other retur
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • devtools::test() 有效,但 devtools::check() 无效。为什么?

    我正在测试this https github com beanumber etlR 包 以下三件事就可以正常工作 devtools test devtools test file tests testthat R Travis CI 与 R
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • pytest:同一接口的不同实现的可重用测试

    想象一下我已经实现了一个名为的实用程序 可能是一个类 Bar在一个模块中foo 并为其编写了以下测试 测试 foo py from foo import Bar as Implementation from pytest import ma
  • 模拟 Spock 中的超类

    如何对 Spock 中具有超类的类进行单元测试 该超类调用来自其超类的方法调用 或者如何模拟 Spock 中的超类 Ex class Bar def method1 parm1 Method actions class Foo extend
  • MSTest 相当于 NUnit 的参数化测试吗?

    NUnit 支持一项功能 您可以为要多次运行的单元测试指定一组数据输入 RowTest Row 1001 1 2 3 Row 1 1001 2 3 Row 1 2 1001 3 public void SumTests int x int
  • Robolectric 1.2:“警告:无法找到 Android SDK 的路径”

    I used Robolectric 1 1 jar 与依赖项 在我的项目中并成功使其工作 但是当我将罐子更改为 1 2 SNAPSHOT jar 与依赖项 我收到以下警告 警告 无法找到 Android SDK 的路径 两个jar包都下载
  • Jasmine:期望在异步函数中抛出错误

    我的 angular2 应用程序中有一个异步函数 我想为其编写单元测试 想象一下我的功能是这样的 myFunc a int Promise

随机推荐

  • C# 对象的事务?

    只是好奇 是否支持普通 C 对象上的事务 喜欢 using var transaction new ObjectTransaction obj try obj Prop1 value obj Prop2 value obj Recalcul
  • Hive(查找连续 n 列中的最小值)

    我在 Hive 中有一个表 有 5 列 即电子邮件 a first date b first date c first date d first date a b c d 是用户可以执行的 4 个不同操作 上表中的 4 列表示用户执行第一个
  • 在 TFS 中以不同方式共享项目文档,您的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道在 TFS 2010 中管理 和版本控制 不同类型的项目文档 例如版本控制目标文档 例如 用例 主测试计划 质量保证计划和非版本控制相关
  • SQLAlchemy Pandas 从 jsonb 读取 sql

    我想用 pandas 生成一个数据框read sql https pandas pydata org pandas docs stable generated pandas read sql html来自我使用 PostgreSQL 进行的
  • 更改永久链接 WordPress 后出现 404 错误

    我的网站是一个Wordpress site创建于PHP 我已将永久链接默认更改为帖子名称 它工作得很好Chrome and Firefox但在 IE8 中不行 首页显示正确 但当我单击另一个页面的链接时 它显示 404 页面未找到错误 我使
  • Hibernate不生成级联

    我有一套hibernate hbm2ddl auto创建以便 Hibernate 为我在 mysql 中创建表 但是 休眠似乎没有正确添加Cascade关于表中的参考文献 然而 当我删除一行 并且我有一个删除级联作为休眠注释时 它确实有效
  • 强制 C++ 编译器检查异常处理

    我想知道是否有一些编译器参数 最好是在 gcc g 中 它将缺少 try catch 块视为错误 这是java中的标准行为 我一直很喜欢它 由于 Java 中的检查异常依赖于throw签名 您可以阅读为什么您不想使用throwC 中的函数签
  • MySQL 唯一 id 或组合 id

    我的项目和开发人员计划的结构如下 developer table id developer name etc project table id project name etc developer project table 因为一个开发人
  • php zlib:如何从字符串变量动态创建内存中的zip文件?

    这就是我需要的 a array folder gt anyfolder filename gt anyfilename filedata gt anyfiledata 我需要使用 a 中的压缩数据创建一个变量 zip 并将此 zip 输出到
  • Sass 更改监视间隔,更频繁地编译

    我正在使用 sass 将 scss 编译为 css 每次保存后 大约需要 15 20 秒才能编译为 scss 文件到 css 因此我需要刷新几次才能看到预期结果 有没有办法告诉 Sass 更频繁地检查更改 这是我使用的命令 sass wat
  • C# 中的随机数 [重复]

    这个问题在这里已经有答案了 可能的重复 随机数生成器没有按我计划的方式工作 C https stackoverflow com questions 767999 random number generator not working the
  • SharePoint 404 页面

    最好的位置是在 web config customError 部分中为 SharePoint 设置 404 错误页面 还是网站集 Web 应用程序上有配置设置 请阅读这个博客 http blogs msdn com jingmeili ar
  • 退出 glutFullScreen()

    我不明白为什么当我按 f 时它进入全屏但不退出全屏 在这个方法的开头我已经设置了bool fullscreen false 这是我的切换代码 case f toggle screenmode if fullscreen glutFullSc
  • 如何在 r 中绘制 LDA 的双标图?

    我使用该函数进行了线性判别分析lda 来自 MASS 包 现在我会尝试绘制像 ade4 包 forLDA 中那样的双标图 你知道我该怎么做吗 如果我尝试使用biplot 功能不起作用 例如 如果我使用 Iris 数据并制作 LDA dis2
  • 如何在 Scala Slick 中运行补丁/部分数据库更新?

    我们想运行补丁 部分UPDATE使用 Slick 3 0 0 以便我们只修改记录中的某些字段 确切地说哪些字段将被更新只有在运行时才知道 例如 对于一个REST PATCH request http restcookbook com HTT
  • C++11 中引入的可选固定宽度整数类型的支持状态

    C 11终于引入了固定宽度整数类型
  • 如果单元格为空白,如何停止公式?

    如果左侧单元格中没有数据 如何停止公式运行 我正在尝试弄清楚如何使用固定时间和动态时钟来显示经过的时间 我的固定时间在 Cell D5 中 动态时钟在 Cell 中J4 附图 为了计算出 经过的时间 我的公式如下 J4 D5 效果很好 但是
  • d3.js:是否可以通过键而不是索引来进行转换?

    我有不同长度的数据数组 x值 年 是有限年数的一部分 例如 var data Year 2008 Value 5 Year 2009 Value 6 or var data Year 2007 Value 8 Year 2009 Value
  • WordPress 操作钩子未触发(wpforms)

    最终完成了一个包含 WordPress 网站的项目 我正在尝试将 WPforms 制作的表单中的数据发布到外部 API 不是一个 WordPress 专家 但我读到我可以通过编写自己的插件来连接其他插件的操作 这是我的插件
  • Ember.js + Mirage:在集成测试中拉取模拟关系

    我有一个使用的组件this get model property 并且它按预期工作 对于我的集成测试 我使用 Mirage 它适用于我的所有其他测试 包括集成测试 但是当我测试这个特定组件时 我得到 TypeError Cannot rea