如何使用jasmine测试Meteor.startup中是否调用了函数?

时间:2015-11-12 20:23:32

标签: node.js meteor jasmine meteor-velocity

我在名为server.js的文件中有以下代码:

Meteor.startup(function(){
    setupMail();
});

我想创建一个单元测试,以确保在setupMail中调用Meteor.startup。我怎么做?这就是我在serverSpec.js中所拥有的:

describe("Meteor startup", function(){
    it("should call setupMail", function(){
        spyOn(global, "setupMail").and.callThrough();
        expect(setupMail).toHaveBeenCalled();
    });
});

测试正在运行,但它没有通过。我认为这是因为Meteor.startup是残缺的。有什么方法可以测试看回调内部传递了什么?

1 个答案:

答案 0 :(得分:-1)

请参阅此链接:

http://xolv.io/blog-posts/2013/04/unit-testing-with-meteor

我确实喜欢这个

Meteor.startup(initServer);

而不是

Meteor.startup(函数(){               initServer             });

其中initServer只包含Meteor.publish调用,并且没有关注上面链接中给出的stub部分;

在测试中:

描述('服务器启动',功能(){

'use strict';

it('should publish Notes', function(){
    spyOn(Meteor, 'publish');
    Meteor.startup(initServer);
    expect(Meteor.publish).toHaveBeenCalledWith('notes', findNotes);
});});

希望这有帮助