摩卡testing与inheritance的JavaScript
我是Mocha和Node的新手,但是尝试在一些JavaScript类上写一些Mochatesting。
我有以下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, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/[\n\r]+/g, " "); }; module.exports = FormField;
当我在这个文件上运行我的摩卡testing时,一切正常,testing通过。
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;
但我不知道如何testing这我已经尝试了以下,但我一直没有定义的FormField。
var expect = require("chai").expect; var FormField = require("FormField").FormField; var targetdatefield = require("TargetDateField");
任何想法如何解决这个问题?
在任何你想要使用FormField
地方,你都require
定义它的模块….除了你的TargetDateField.js
文件,你require
它。 这就是为什么你得到一个错误。 你也需要在那里:
var FormField = require("FormField"); TargetDateField.prototype = new FormField(); // etc...
顺便说一句,我强烈build议编写代码,当你想加载其他模块是相同的包的一部分,使用相对path。 乍一看,我期望require("FormField")
从node_modules
加载一些东西。 (就像你require("chai")
)