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

Javascript 使用节点时未定义输入参数,javascript,node.js,buster.js,Javascript,Node.js,Buster.js,我开始用javascript开发jsut,但在分离概念(js、node、buster等)时仍然存在一些问题,因此如果问题不在正确的范围内,请原谅我 我正在尝试开发一个js应用程序,希望有一个测试驱动的方法 下面是我在js文件夹中定义的一个简单对象: var Friend = (function(name, email){ console.log(name) if (typeof(name) != "string") throw "Expected a string for nam

我开始用javascript开发jsut,但在分离概念(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
我做错了什么


Thx,

嗯,我好像想把事情弄得比需要的复杂

通过将friend定义为函数:

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内完成