javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?

标签 javascript function assert assertions chai

Chai ,您可以执行以下操作:

expect({}).to.exist;

exist 不是函数调用,但这在测试框架中仍然有效。相反的 (expect({}).to.not.exist) 会导致测试失败,但同样,exist 不是函数调用。

在不让我调用函数的情况下,这些断言如何工作?事实上,如果我尝试说 expect({}).to.exist() 测试失败,因为 exist 不是一个函数。

最佳答案

我想出来了(或者至少,我想出了一个方法)。使用 JavaScript getters :

var throws = {
  get a() {
    throw new Error('a');
  },
  get b() {
    throw new Error('b');
  },
  get c() {
    throw new Error('c');
  }
};

当执行throws.athrows.bthrows.c 时,将抛出相应的错误。

从那时起,构建包含在 Chai 中的断言就相当容易了。

关于javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711864/

相关文章:

javascript - 如何在Canvas上按给定坐标绘制图像?

c# - 可以使用 Boost 或 STL 显示自定义字符串的 C++ 断言?

javascript - 从元素中删除/重置继承的 css

javascript - 在 javascript 中访问/生成 java 枚举

javascript - 如何将 React JSX 文件转换为简单的 JavaScript 文件【离线转换】

mockito - 我应该如何使用 org.mockito.AdditionalMatchers.gt?

C++ 断言 : the precedence of the expression in an assert macro

swift - 根据函数参数创建类的实例

mysql - 在 MySQL 中执行函数时 SELECT 命令被拒绝

具有可变参数的 MySQL 函数