聚合物单元测试模拟依赖关系

2024-01-05

我刚刚开始使用聚合物。我正在尝试对具有依赖项的自定义元素进行单元测试,并且我想伪造/模拟这些元素。 我找到了 Scott Miles 关于如何模拟 core-ajax 实现的建议。我认为我可以轻松地遵循该模式,但这仅在我的元素不导入即将被模拟的元素(在本例中为 core-ajax)的情况下才有效。 如果它确实导入它,那么当测试尝试运行时我得到

'未捕获的NotSupportedError:无法在'文档'上执行'registerElement':类型'core-ajax'的注册失败。具有该名称的类型已被注册。

如果我可以做类似 document.unregister the core-ajax 元素并在我的测试中再次导入它的事情,我会成为一个更快乐的开发者! Polymer 很棒,但如果我无法对它进行单元测试,那么它就会带来重大风险(至少在构建需要维护/更改的应用程序时)

你们如何解决这个问题?我一直在深入研究 Polymer 和 PolymerLab elements repo,其中大多数都缺乏测试。到目前为止,我还没有找到太多关于如何做到这一点的参考。

谢谢您的帮助!

Santiago

斯科茨的建议是:

创建您自己的 core-ajax 元素,而不是导入 core-ajax/core-ajax.html。

<polymer-element name="core-ajax" attributes="response">
<script>
  Polymer('core-ajax', {
    attached: function() {
      this.response = ['a', 'b', 'c'];
    }
 });
</script>
</polymer-element>

显然,这只是一个示例,实际的实现取决于所需的模拟行为。

这只是解决问题的一种方法,还有很多其他方法。我很想听听您认为什么(不)方便。


这个问题有点老了。我想我会提供更新,因为这是一种很常见的情况。

Polymer CLI 是对 Polymer 元素进行单元测试的推荐方法。它用于测试的底层库称为 web-component-tester (WCT)。 WCT 支持存根元素。基本上,如果您的某个测试依赖于另一个元素来返回数据,您可以创建该元素的存根,该存根始终返回一致的数据。

单元测试代码中用于指定stub元素的JS:

setup(function() {
  replace('paper-button').with('fake-paper-button');
});

待测试元素:

<dom-module id='x-el'>
  <template>
    <paper-button id="pb">button</paper-button>
  </template>
</dom-module>

在测试运行时,内容模板将被标记为:

<dom-module id='x-el'>
  <template>
    <fake-paper-button id="pb">button</fake-paper-button>
  </template>
</dom-module>

https://www.polymer-project.org/1.0/docs/tools/tests#create-stub-elements https://www.polymer-project.org/1.0/docs/tools/tests#create-stub-elements

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

聚合物单元测试模拟依赖关系 的相关文章

  • Googletest 参数化测试崩溃

    我刚刚了解到googletest 中的值参数化单元测试 https github com google googletest blob master docs advanced md value parameterized tests并想在
  • 单元测试术语概述(存根与模拟、集成与交互)?

    我在我的项目中使用了更多的单元测试 并阅读了我可以在网上找到的所有信息 并且对很多术语感到困惑 因此 我可能在对话和谷歌搜索中错误地使用了这些术语 有人可以概述所有单元测试术语 例如 假 类型以及测试类型 交互与集成 吗 当谈到模拟 假货和
  • 如何获取 vuejs 组件单元测试中定义的“this”变量

    我正在尝试在 npm 脚本中使用 mocha webpack 来测试 vuejs 组件 我在测试中像这样嘲笑 vuex 商店 const vm new Vue template div div
  • 是否可以模拟 Python 3.6 中的内置 len() 函数?

    是否可以模拟内置len Python 3 6 中的函数 我有一个类定义了一个简单的方法 该方法依赖于len 函数如下 class MyLenFunc object def is longer than three characters se
  • F# 开发和单元测试? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我刚刚开始使用 F 这是我的第一种函数式语言 我一直在准专门使用 C 工作 并且非常喜欢 F 引导我重新思考如何编写代码 我觉得有点迷失方向的一
  • Xamarin Studio 上的代码覆盖率

    是否有可靠的工具可以帮助我们测量单元测试的代码覆盖率 我主要从事 Xamarin 项目 在 Xamarin Studio 中 为了不得到大量 1 我环顾四周 但找不到足够成熟可靠的东西 我不要求产品免费 但如果是的话当然更好 Mono 4
  • 如何使用纸对话高分子元件?

    我通过添加开始和结束标签来使用该元素
  • 单元测试 SqlFunction

    我有一个公开 IQueryable 的存储库和一个处理特定查询的服务 这里有一些使用 DbFunctions 的方法 为了可测试 我创建了一个带有静态元素列表的假存储库并将其注入到服务中 问题是 由于我的服务查询列表并且不使用数据库 因此我
  • 使用 RhinoMock 或 Moq 测试方法的内部结构

    我对这个嘲笑的事情很陌生 我有几个问题 如我错了请纠正我 模拟不会初始化真正的方法 即模拟不会实际调用类的构造函数 相反 它会执行类似查看类的签名并创建具有该签名但没有任何方法功能的对象的操作 如果您只需要该类型的对象但不想测试它的内部结构
  • 通过 Javascript 在聚合物元素模板内添加或附加 HTML

    为了使轮播功能在 Polymer 元素内部工作 我以编程方式在元素脚本内部创建 Slick 轮播所需的标记 假设在此代码片段中 this videos 已作为包含 youtube 视频信息的对象数组加载 特别是 id 和 name 属性 C
  • 在 IntelliJ 中运行单元和集成测试

    目前 我的 Java 项目中有两组不同的测试 单元测试 集成测试 这些测试使用 Arquillian 在容器中运行 我目前使用 Gradle 作为我的构建脚本 并使用 JetGradle 与 IntelliJ 12 集成 在我的 Gradl
  • Ant 是否可以在构建结束时列出失败的测试?

    来自另一个线程的以下代码片段用于打印一条消息 并在运行所有单元测试后失败
  • React - Jest - 测试阻止默认操作

    我不知道如何测试按键事件并防止默认 测试达到了代码但是preventDefault从未被称为 Received number of calls 0 反应组件 App js const onKeyDown e gt console log T
  • 如何对我的 asp.net-mvc 控制器的 OnActionExecuting 方法进行单元测试?

    我已经重写了控制器的 OnActionExecuting 方法 以根据执行的 filterContext 设置一些内部状态 我该如何测试这个 该方法本身是受保护的 所以我假设我必须在调用堆栈中走得更高 我需要什么代码来测试这个 我正在使用
  • SSDT 单元测试:从配置文件读取 SQL Server 单元测试设置时发生错误

    我在 Visual Studio 2013 professional 中创建了一个数据库项目 然后通过右键单击存储过程之一并选择来添加单元测试创建单元测试 选择创建一个新的VB测试项目 然后右键单击新创建的测试项目并选择SQL Server
  • Spring Boot 单元测试 - 测试失败,抱怨没有定义“entityManagerFactory”bean

    我正在尝试为 Spring Boot 应用程序中的控制器编写单元测试 该应用程序运行顺利 我的问题是运行它tests 这是测试代码 RunWith SpringRunner class WebMvcTest MyController cla
  • 如何测试两个 Joda-Time DateTime 对象几乎相等?

    在单元测试中 我经常使用返回DateTime于或关于now 有没有办法说actual日期时间在几秒之内actual约会时间 这听起来是个坏主意 单元测试不应该以任何方式依赖于当前的实际时间 这就是为什么注入一些接口是一个很好的做法 称为Cl
  • 尝试在 Android Studio 上运行单元测试时出现 NoClassDefFoundError

    我正在尝试为我的 Android 应用程序创建一些简单的测试 但在运行测试时遇到了问题 当我尝试运行测试时 我不断收到 NoClassDefFound 错误 但我似乎无法弄清楚其原因是什么 如果我能有一双新的眼睛来看待这个问题 我将不胜感激
  • 如何在mockito中模拟Spring依赖

    我正在尝试嘲笑 Spring Beans 我能够模拟对象 B 和 C 但无法模拟 B 类内的对象 插入类 A 中的模拟包含 B 但 X 和 Y 为空 即使我嘲笑了它们 Mockito 有没有办法模拟 Spring bean 中成员的对象 N
  • 聚合物纸下拉菜单在浏览器中未正确呈现

    我对简单的纸张下拉菜单的渲染 html 遇到问题 列表项并不显示为样式化的 菜单 而只是出现在页面上的项目列表 单击渲染的纸张输入组件 渲染的下拉列表的一部分 确实会为波纹设置动画 但不会为菜单和菜单项的显示 隐藏设置动画 单击列表中的某个

随机推荐