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

我做错了什么?

谢谢,

4

1 回答 1

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内

于 2013-02-27T12:46:01.417 回答