gpt4 book ai didi

node.js - Mocha 通过继承测试 javascript

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:45 25 4
gpt4 key购买 nike

我是 Mocha 和 Node 的新手,但尝试在一些 JavaScript 类上编写一些 Mocha 测试。

我有以下类(class):

function FormField() {
}

FormField.prototype.sanitizeFieldValue = function(value) {
if (value == null || value.replace == null) {
return null;
}
return value
.replace(/ /g, " ")
.replace(/&/g, '&')
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/[\n\r]+/g, " ");
};

module.exports = FormField;

当我对此文件运行 Mocha 测试时,一切正常并且测试通过。

var expect = require("chai").expect;
var formfield = require("FormField");

describe("new Form Field Tests", function() {
var ff = new formfield();
describe("sanitizeFieldValue", function() {
it("escapes apostrophe", function() {
expect(ff.sanitizeFieldValue("'")).to.equal("\\\'");
});
});
});

但是,我有另一个文件引用第一个文件:

TargetDateField.prototype = new FormField();
function TargetDateField() {
// some functions

}
module.exports = TargetDateField;

但我不知道如何测试这个我已尝试以下操作,但我不断收到 FormField is not Defined 的消息。

var expect = require("chai").expect;
var FormField = require("FormField").FormField;
var targetdatefield = require("TargetDateField");

关于如何解决这个问题有什么想法吗?

最佳答案

在您想要使用 FormField 的任何地方,您都需要定义它的模块......除了在您的 TargetDateField.js 文件中,您不需要需要它。这就是您收到错误的原因。您也需要在那里require它:

var FormField = require("FormField");

TargetDateField.prototype = new FormField();
// etc...

顺便说一句,当您想要加载属于同一包的其他模块时,我强烈建议您编写代码以使用相对路径。乍一看,我希望 require("FormField")node_modules 加载某些内容。 (就像您执行 require("chai") 时一样。)

关于node.js - Mocha 通过继承测试 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673801/

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