2013-02-27 53 views
0

我开始使用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", "[email protected]"); 
    assert.equals(my_friend.name, "Georges"); 
    assert.equals(my_friend.email, "[email protected]"); 
    } 
}); 

我这里关注的是测试它如果我运行我的测试,名称和电子邮件在朋友中不知道,就像输入参数未通过一样:

$ 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,

回答

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; 

的问题似乎解决

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

相关问题