2017-12-06 9 views
1

私はMochaとNodeが初めてですが、いくつかのJavaScriptクラスについていくつかのMochaテストを書こうとしています。Mochaが継承を使用してJavaScriptをテストしています

私は以下のクラスがあります。

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; 

私は、このファイルに私のモカ・テストを実行すると、すべてが正常に動作し、テストに合格します。

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; 

をしかし、私は次のことを試してみましたが、私はフォームフィールドが定義されていない得続ける方法この をテストすることを確認していません。

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

これを解決する方法はありますか?

答えて

0

FormFieldあなたはrequireを定義するモジュールを除きます。TargetDateField.jsファイル以外では、requireはありません。だからこそあなたは誤りを抱えています。あなたもそこにrequireする必要があります。

var FormField = require("FormField"); 

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

ちなみに、私は強くあなたが同じパッケージの一部である他のモジュールをロードする際に相対パスを使用するようにコードを書くことをお勧めします。一見すると、私はrequire("FormField")が何かをnode_modulesからロードすることを期待しています。 (あなたがそうするときのようにrequire("chai")

関連する問題