0

我一直在努力将 neo4j thingdom 模块包含在我的单元测试中(问题:我如何使用 sinon 来为 neo4j Thingdom 模块存根函数)所以我决定将它抽象出来并在模块周围创建一个简单的包装器,以便我可以进行单元测试我的模块是我的模拟/存根抽象。

我想我仍然会验证这个模块是否正常工作,而不是通过单元测试或通过测试构建它,因为它确实没有聪明的行为(它只是包装标准函数)位我会集成测试它以确保它正在调用数据库并做底层模块应该做的事情。

创建了一个测试文件,使用 mocha 语法和良好的旧命令行开始创建一些测试并全部通过....问题是它们通过了不管出于某种原因在执行测试的上下文中对 thingdom 模块的方法调用(以及随后的回调)永远不会被调用,没有任何东西被返回并且测试只是通过了。

函数看起来像:

NeoProvider.get = function (id, next) {
    db.getNodeById(id, function (err, node) {
        if (err) return next(err);
        next(null, node);
    });
};     

测试('aaa' 是我尽我所能让它失败:

    it('should get a node from the database based on a specific id', function(){
        //var neo = new ();
        NeoProvider.get(id, function(err, node){
            node.should.eql('aaa');
       });
    });

奇怪的是,如果您通过正常上下文(服务器,在这种情况下为 Resify)调用该函数,则代码有效,返回一个节点(如果它不存在,则返回未定义),所以当您尝试通过测试运行器运行它?

这句话是正常的还是我做了一些非常愚蠢的事情(这更有意义)

4

0 回答 0