Chai assertion 错误:Object is not a constructor

阅读时长 4 分钟读完

简介

Chai 是一个流行的 Node.js 测试框架,其使用 assert 库进行断言。然而,当我们使用 new 关键字来创建一个实例时,有时候会遇到 Object is not a constructor 的错误。

问题分析

这个错误的原因是因为我们使用了错误的语法或者引用了一个不是 constructor 的对象。

对于语法错误,我们需要检查传入 new 的参数是否正确。这个参数必须是一个 constructor,也就是一个函数。

对于不是 constructor 的对象,我们需要检查该对象是否本身就不是一个 constructor,或者是否我们在使用 import 或 require 时,引用了一个错误的库。

解决方案

检查传入参数

我们使用 new 关键字时,是要传入一个构造函数,例如:

而我们如果传入的不是构造函数的话,就会报 Object is not a constructor 的错误:

我们在调用 chai.assert 的时候,同样需要传入一个构造函数:

我们如果传入一个非构造函数,如:

就会遇到 Object is not a constructor 的错误。所以,我们要保证传递给 instanceOf 的参数必须是一个构造函数。

检查 Library

如果我们的代码没有语法错误,那么我们需要检查我们是否正确引入了必要的库。特别是当我们使用 require 或 import 时,需要确保我们引入的是正确的库。

例如,我们在 Mocha 中使用 chai,我们应该这样引入:

然后是断言时:

这是正确的用法。但有时候,我们会误写成这样:

或者是这样:

这些都会导致 Object is not a constructor 的错误。所以,检查我们的库引用是很重要的。

示例代码

-- -------------------- ---- -------
----- ---- - ---------------
----- - ------ - - ----

----- --- --
----- --- - --- -----

-- --- ---------
---------------------- ----
---------------------- -------

-- --- ---------
---------------------- ------ -- ---------- ----- -- --- - -----------
---------------------- --------- -- ---------- -------- -- --- - -----------

总结

Chai assertion 错误:Object is not a constructor,通常是由于我们使用了错误的语法或者引用了不正确的库所导致。我们需要确保我们传递给 instanceOf 的参数是一个构造函数,并且我们正确引用了需要的库。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c88d5c5ad90b6d0413eb90

纠错
反馈