gpt4 book ai didi

javascript - 在 Chai 中,expect().to.be.true 是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 17:43:12 27 4
gpt4 key购买 nike

expect(true).to.be.true;

在此代码中,所有“to”、“be”、“true”似乎都是来自“expect(true)”的对象响应的属性。

这些属性如何工作才能引发异常?

最佳答案

您可以查看源代码:

[ 'to', 'be', 'been'
, 'is', 'and', 'has', 'have'
, 'with', 'that', 'which', 'at'
, 'of', 'same', 'but', 'does' ].forEach(function (chain) {
Assertion.addProperty(chain);
});

有一个addPropertyutils :
https://github.com/chaijs/chai/blob/master/lib/chai/utils/addProperty.js

有了这个,您可以无限链接属性,例如:.to.be.to.to.to.be.equal()

让我们创建一个更简单的演示:

假设您有 assert对象,带有 .true()方法

const assert = {
'true': function (v) {
return !!v
}
}

并且您希望能够链接 .to无限地。只需使用 defineProperty定义我们的 getter:

Object.defineProperty(assert, 'to', {
get() {
return assert
}
})

所以现在你可以

assert.to.to.to.to.true(false)

工作代码:https://codepen.io/CodinCat/pen/LLzBEX?editors=0012

<小时/>

我在这里添加了另一个更复杂的示例:https://codepen.io/CodinCat/pen/dRVjXL?editors=0012

在此示例中,您可以看到.true中有一些行为。属性。

我们存储 expect() 中的值在内部__expectObj__value属性,然后在 .true 的 getter 中验证它。所以你可以

expect(false).to.to.to.to.true

关于javascript - 在 Chai 中,expect().to.be.true 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com