我正在学习Nicholas Zakas的《Web前端开发专业JavaScript》这本书,并使用Jasmine.js测试其中的示例。
目前,我可以通过指定函数的返回值来测试函数的输出,但是当我想要返回多个数据片段时就会遇到麻烦。
教材使用alert()方法,但这很麻烦,我不知道如何测试警报。我想知道是否有一种方法可以测试console.log()的输出。例如:
function_to_test = function(){
var person = new Object();
person.name = "Nicholas";
person.age = 29;
return(person.name); //Nicholas
return(person.age); //29
});
我知道我可以将它们作为一个字符串返回,但对于更复杂的示例,我想能够测试以下内容:
function_to_test = function(){
var person = new Object();
person.name = "Nicholas";
person.age = 29;
console.log(person.name); //Nicholas
console.log(person.age); //29
});
Jasmine测试看起来像这样:
it("should test for the function_to_test's console output", function(){
expect(function_to_test()).toEqual("console_output_Im_testing_for");
});
有没有一种简单的方法可以做到这一点,而我只是错过了呢?我对编程还比较新,所以任何指导将不胜感激。
return(person.name); return(person.age);
是完全错误的。只有 第一个 return 语句会执行,第二个永远不会被执行。这里更大的问题是你似乎在测试函数的内部细节。你真的没有必要知道函数的内部实现,你应该只测试它的输出。你所返回的任何东西都是你应该测试的内容。 - user229044