使用节点时输入参数未定义

时间:2013-02-27 12:25:46

标签: javascript node.js buster.js

我开始用javascript开发并且仍然存在一些问题来分离概念(js,node,buster,...)所以请原谅我,如果问题不完全在正确的范围内。

我正在尝试开发一个js应用程序,并希望采用测试驱动的方法。

这是我在js文件夹中定义的一个简单对象:

var Friend = (function(name, email){
    console.log(name)
    if (typeof(name) != "string") throw "Expected a string for name"

    this.name = name;
    this.email = email;
}());
module.exports = Friend(name, email);

在我的测试文件夹中,我想使用friend_test.js

进行测试
var buster = require("buster");
var Friend = require('/../js/friend');

buster.testCase("A normal Friend", {
    "should have a name and a mail": function(){
    var my_friend = new Friend("Georges", "georges@hotmail.com");
    assert.equals(my_friend.name, "Georges");
    assert.equals(my_friend.email, "georges@hotmail.com");
    }
});

我担心的是,如果我运行我的测试,在朋友中不知道姓名和电子邮件,就像没有传递输入参数一样:

$ node test/friend-test.js
undefined
undefined

friend.js:4
    if (typeof(name) != "string") throw "Expected a string for name"
                                  ^
Expected a string for name

我做错了什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

嗯,好像我试图让事情变得比需要的更复杂。

通过将朋友定义为函数:

var Friend = function(name, email){
    if (typeof(name) != "string") throw "Expected a string for name"

    //TODO: Check email is valid here

    this.name = name;
    this.email = email;
};

module.exports = Friend;
问题似乎已经解决了

$ node test / friend-test.js 一个普通的朋友:。 1个测试用例,1个测试,2个断言,0个失败,0个错误,0个超时 完成0.003s