当前位置: 首页 > 知识库问答 >
问题:

期望测试不适用于ES6/ES2015 Set对象

凌经赋
2023-03-14

下面的测试应该失败,但它正在通过:

it('should fail', () => {
  const actual = new Set('a');
  const expected = new Set('b');
  expect(actual).toEqual(expected);
});

我正在使用npm的expect包。我用Babel 5来使用Set。我使用的是节点5,所以使用的集合应该是本机的。我是做错了什么,还是这看起来像是expect包中处理集合的错误?我在包裹上交叉贴了一个问题,因为我不确定。

共有1个答案

华佐
2023-03-14

expect依赖于不支持集合和映射的deep equal

这与节点的断言的行为一致:

var a = new Set('a');
var b = new Set('b');
console.log(require('assert').deepEqual(a, b) || 'ok');
// Prints 'ok' !

这里讨论了这个问题:

断言:添加对Set和Map的支持

这一评论特别有趣:

我认为我们不应该这样做(或在#2309中做任何其他事情)。Assert应仅用于测试io。js本身,而不是试图成为一个好的通用断言库。如果是我。js测试需要这种能力足够多的时间,我们需要考虑它,我们应该这样做,但在那之前,仅仅因为它很好而添加它并不是一个好主意。

你可以:

  • 使用assert6
  • 或(重新)打开门票以引起对此的关注
  • 或者使用另一个库,比如@simon-p-r提到的代码
  • 或手动进行比较。请参见比较ECMA6集是否相等

 类似资料:
  • 期望能力“Chrome” 我有一个正确的集线器设置和一个节点 但是,当试图将浏览器指向Chrome节点之一时,它不起作用。 当前代码: 例外:org.openqa.selenium。SessionNotCreatedException:无法创建新的远程会话。所需功能=功能[{browserName=chrome,版本=55.0.2883.87 m,平台=WINDOWS}],所需功能=功能[{}]

  • 我模拟了spring boot服务类来测试catch块语句。我的示例测试用例如下: 聚 甲醛: 测试用例执行得很好,但它没有反映在Java代码覆盖率报告中。我的catch语句仍然显示它没有被测试覆盖。 可能的原因是什么? 参考 具有Jacoco代码覆盖率的PowerMockito https://www . igorkromin . net/index . PHP/2018/02/20/jacoc

  • 我想在android项目中生成JUnit测试的代码覆盖率报告,所以我添加了JaCoCo gradle插件。这是我的项目级文件: 它通过运行<code>工作得很好/gradlew JacoFullReport。但不幸的是,使用<code>RobolectricTestRunner@RunWith注释的测试,或者使用运行的测试报告覆盖率很好。 任何帮助都将不胜感激来解决这个问题。 更新1:我注意到我应

  • 我正在springboot应用程序中编写Junits,它只有一个初始化器类 以及其他控制器和服务类。 服务类的Junit如下所示: 当我运行Junit时,它会抛出如下错误: 我还尝试了所有注释,如,@ContextConfiguration(classes=Initializer.class),,但它仍会抛出相同的错误。代码中没有其他类似于应用程序上下文的配置类。

  • 我是scala新手,junit测试用例不在集成测试中运行。 我在build.sbt中添加了 请帮助我运行集成测试

  • 似乎我在Spring 4.1.17中使用Spring Boot1.2.6.RELEASE做的任何事情都不起作用。我只想访问应用程序属性并在必要时使用test覆盖它们(无需使用hack手动注入Property tySource) 这不工作... 这也不是. 也不是这个... 完整的测试用例... 导致 似乎3.x和4.x之间有很多相互矛盾的信息,我找不到任何可以肯定的东西。 如有任何见解,将不胜感激