I'm working through the text: Professional JavaScript for Web Developers by Nicholas Zakas and I'm testing the examples with Jasmine.js.
I can currently test the output of a function by specifying a return a value, but I'm running into trouble when there are multiple pieces of data that I want to return.
The textbook uses the alert() method, but this is cumbersome and I don't know how to test for alerts. I was wondering if there was a way to test for console.log() output. For instance:
function_to_test = function(){
var person = new Object();
person.name = "Nicholas";
person.age = 29;
return(person.name); //Nicholas
return(person.age); //29
});
I know I can have them return as one string, but for more complicated examples I'd like to be able to test the following:
function_to_test = function(){
var person = new Object();
person.name = "Nicholas";
person.age = 29;
console.log(person.name); //Nicholas
console.log(person.age); //29
});
The Jasmine test looks something like:
it("should test for the function_to_test's console output", function(){
expect(function_to_test()).toEqual("console_output_Im_testing_for");
});
Is there a simple way to do this that I'm just missing? I'm pretty new to coding so any guidance would be appreciated.
return(person.name); return(person.age);
is completely wrong. Only the first return statement will execute, the second will never be reached. The larger problem here is that you seem to be testing the internals of a function. You really have no business knowing what the function does internally, you should only be testing its output. Whatever you're actually returning from that function is what you should test. – Fetation