在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.a
、throws.b
或throws.c
时,将抛出相应的错误。
从那时起,构建包含在 Chai 中的断言就相当容易了。
关于javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711864/