(初学者)摩卡:如何测试依赖类?

时间:2017-05-08 21:23:17

标签: javascript

我是Mocha的新手,并尝试通过测试我的课程来学习。 我看过几篇帖子,包括这两篇:

但我无法弄清楚如何让它适合我: - /

我有两个班级:

Fichier.js

function Fichier(path){

    this.local_path = path;
    this.local_data = NaN;
}
module.exports = Fichier

Arbre.js

function Arbre(chemin)
{
    this.path       = chemin ; 
    this.fichier    = new Fichier(this.path);
    this.noeuds = [];
    this.fichier.lecture(this.make_structure, [this]);    
}

ARBRE-spec.js

'use strict';

var expect  = require('chai').expect    ;
var Fichier = require('./Fichier.js')     ;

describe('Arbre', function() {  

            it('should exist', function() 
                                {
                                    var Fichier = require('./Fichier.js')   ;
                                    var Arbre   = require('./Arbre.js'  )   ;
                                    expect(Arbre).to.not.be.undefined       ;
                                });
});

问题是我的班级“Arbre”依赖于“Fichier”类,它没有加载,因为测试的输出告诉我:

$ mocha arbre-spec.js


  Arbre
hello
    1) should exist


  0 passing (9ms)
  1 failing

  1) Arbre should exist:
     ReferenceError: Fichier is not defined
      at new Arbre (arbre.js:29:22)
      at Object.<anonymous> (arbre.js:111:16)
      at require (internal/module.js:12:17)
      at Context.<anonymous> (arbre-spec.js:13:49)

如何导入“Fichier”进行测试?

修改

根据评论,我在Arbre.js中添加了:require:

require ("./Fichier.js")
require ("./Noeud.js")
require ("./Feuille.js")

我仍然有错误:

//Arbre-spec.js
'use strict';

var expect  = require('chai').expect    ;

describe('Arbre', function() 
                    {   
                        it('should exist', function() 
                                            {
                                                var Arbre   = require('./Arbre.js'  )   ;                        
                                                expect(Arbre).to.not.be.undefined       ;
                                            });
                        it('', function() 
                                            {
                                                var Arbre   = require('./Arbre.js'  )   ;                                                                       
                                                console.log(Arbre)
                                                expect(new Arbre("")).to.not.be.undefined       ;
                                            });
});

在Arbre.js函数中给我一个错误:

$ mocha Arbre-spec.js


  Arbre
    ✓ should exist
[Function: Arbre]
    1)


  1 passing (18ms)
  1 failing

  1) Arbre :
     ReferenceError: Fichier is not defined
      at new Arbre (Arbre.js:27:22)
      at Context.<anonymous> (Arbre-spec.js:17:47)

Arbre.js

require ("./Fichier.js")
require ("./Noeud.js")
require ("./Feuille.js")
function Arbre(chemin)
{
    this.path       = chemin ; 
    this.fichier    = new Fichier(this.path);
    this.noeuds     = [];
    this.fichier.lecture(this.make_structure, [this]);


}

1 个答案:

答案 0 :(得分:1)

您需要为其分配require调用才能正常工作。

例如Arbre.js

var Fichier = require ("./Fichier.js");
var Noeud = require ("./Noeud.js");
var Feuille = require ("./Feuille.js");

function Arbre(chemin)
{
    this.path       = chemin ; 
    this.fichier    = new Fichier(this.path);
    this.noeuds     = [];
    this.fichier.lecture(this.make_structure, [this]);


}

您可以将modules.exports视为未命名的值(值可以是Fichier.js中的函数或其他内容),并在使用require时将其赋值给变量这个名字!否则,程序会崩溃,抱怨你指的是当前范围内不存在的东西。