Javascript 我试着测试一个函数,它将另一个函数作为参数

Javascript 我试着测试一个函数,它将另一个函数作为参数,javascript,functional-programming,tdd,enzyme,chai,Javascript,Functional Programming,Tdd,Enzyme,Chai,我正在使用chai尝试并单元测试我在网上找到的验证函数。此验证功能正在“react final form”组件中使用 下面是我从中获得此验证器函数的原因: 目前,两个断言都返回[function],而不是我期望的字符串值,我不知道为什么。任何关于如何修改此测试的想法都将不胜感激。我非常喜欢最终形式。它真的帮助我们掌握了如何使用curry函数。所以,您从我个人使用的字段的最终表单中获取的示例 composeValidators(required)(value) 咖喱是一个奇怪的概念,你不需要它就

我正在使用chai尝试并单元测试我在网上找到的验证函数。此验证功能正在“react final form”组件中使用

下面是我从中获得此验证器函数的原因:


目前,两个断言都返回[function],而不是我期望的字符串值,我不知道为什么。任何关于如何修改此测试的想法都将不胜感激。

我非常喜欢最终形式。它真的帮助我们掌握了如何使用curry函数。所以,您从我个人使用的字段的最终表单中获取的示例

composeValidators(required)(value)
咖喱是一个奇怪的概念,你不需要它就可以过得去,所以不要为第一眼看不懂而烦恼

让我们看看签名:

const composeValidators=…验证器=>value=>

第一个函数接受X个道具或验证规则。你把那部分搞定了。现在,第二个函数需要一个值。你可能看到它与Field的validate道具一起使用。如果您查看FieldProp的文档,请参阅下面的链接,您将看到它接受一个函数并向其传递3个参数,value、allValues和meta,而不仅仅是value。这可以帮助您编写更好的验证规则,其中考虑了有关字段的更多信息。无论如何,当final form使用此选项时,其形式为:

composeValidators(required)(value, allValues, meta)
我不认为这马上就有意义,但它应该可以帮助您思考咖喱的一个特定用例有一些高级选项。享受最后的形式


看起来url是对一个函数的引用,我想你需要调用composeValidatorsurlvalue和composeValidatorsrequired一些值?我已经尝试过了,遗憾的是这两个函数仍然从任何人那里返回[function]任何其他想法?composeValidatorsrequired,url,…to.equal这是必需的或composeValidatorsrequired,url, ...https://stackoverflow.com.to.equalundefined -永远不要使用你不懂的代码。
composeValidators(required)(value, allValues, meta)