I have a simple question. How do I unit test a function which is dependent on a parameter? Like say for example:
Code:
function a(param) {
if(param > 0)
return param+value;
else
return param;
}
How do I unit test function a without having param? I hear this I use mocks or spies in jasmine. Can someone show me an example, I am really confused. Thank you all in advance.
Edit:
Thank you for such a conprehensive answer David. I really appreciate it. Here is more information about my question.
This is in fact my true question, I have a file
snap-fed.js :
//Code here...
Which I would like to unit test comprehensively as you showed me. But I am unsure as to how to do this using jasmine or mocha.
Like how could I test any of the methods of the snap object? How could I unit test snap.eligibility or snap.isSnapResourceEligibile? I have been stuck on this issue for about 2 days, I really don't understand.
They all take in a parameter info which provides info about the object being worked on by the methods.
This was my true question but I did not know how to ask it.
Edit 2:
Based on David's template I made this, but it doesn't even run...
snap-fed.spec.js :
describe(snap-fed, function() {
describe(Properties, function() {
it(should exist, function() {
expect(Allowance).not.toBeUndefined();
expect(AllowanceAdditional).not.toBeUndefined();
expect(MaxAllowanceHouseholdSize).not.toBeUndefined();
});
it(should contain correct values, function() {
expect(Allowance).toEqual([189, 347, 497, 632, 750, 900, 995, 1137]);
expect(AllowanceAdditional).toBe(142);
expect(MaxAllowanceHouseholdSize).toBe(Allowance.length);
});
});
describe(Functions, functions(){
it(should return the expected result, function() {
expect(snap.isSnapResourceEligible(info)).toBeTruthy();
});
//Put more test cases for the various methods of snap
});
});