Chai等断言库如何在不强制调用函数的情况下工作?

时间:2013-07-17 23:12:37

标签: javascript function assert assertions chai

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

expect({}).to.exist;

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

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

1 个答案:

答案 0 :(得分:11)

我想通了(或者至少,我想出了一个方法)。使用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中包含的断言相当容易。