我开始用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
我做错了什么?
谢谢,
答案 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