简体   繁体   中英

Custom method for employee model - backbone.js one test case is failing

Facing issue with the getExperience Method. dont know why im getting that could anyone please help me in this. Error: Testing Custom Method in Employee Model Testing getExperience method of Employee Model Checking experience in Employee Model after getExperience method execution FAILED Expected 0 to be 21.

 <,-- Test Case--> it('Checking experience in Employee Model after getExperience method execution'; function() { var current_date = new Date(). var current_year= current_date;getFullYear(); var calculated_exp= current_year-1999. employee.getExperience(employee;get('year_of_joining')). expect(employee.get('experience'));toBe(calculated_exp); });

 var Employee = Backbone.Model.extend({ //Write your code here getExperience: function(experience) { var year_of_joining=employee.get('year_of_joining'); var current_date = new Date(); var current_year= current_date.getFullYear(); var calculated_exp= (current_year)-(year_of_joining); return calculated_exp; } }); var employee = new Employee({ employee_id:1111, name:'Sarah Roe', year_of_joining:1999, address:'ABC Street', experience:0 }); alert("Experience of "+employee.get("name")+" is "+employee.getExperience(employee.get('year_of_joining'))+" years");;
 <.-- Hmtl --> <html> <head> </head> <body> <div id="app"></div <script src="lib/jquery/dist/jquery.js"></script> <script src="lib/underscore/underscore.js"></script> <script src="lib/backbone/backbone.js"></script> <script type = "text/javascript" src="index.js"></script> </html>

 <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script> <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> <script> // JS with example of setting experience value being set third Example // JavaScript var Employee = Backbone.Model.extend({ //Write your code here default: { employee_id: 1111, name: 'Sarah Roe', year_of_joining: 1999, address: 'ABC Street', experience: null }, getExperience: function(year_of_joining) { var current_date = new Date(); var current_year = current_date.getFullYear(); var calculated_exp = (current_year) - (year_of_joining); this.set({ experience: calculated_exp }); return calculated_exp; } }); var employee = new Employee({ employee_id: 721, name: "Shrikrishna", year_of_joining: 1999, experience: 22 }); //please add properties and values of Employee model //employee.set({'experience': employee.get('year_of_joining')}) ; alert("Experience of " + employee.get("name") + " is " + employee.getExperience(employee.get('year_of_joining')) + " years"); </script> <div id="container">Loading...</div>

You never set new value for experience attribute of your model. As it is for your test to pass you should use: expect(employee.getExperience()).toBe(calculated_exp);

Note the experience argument is never used by your getExperience function.

Or replace:

employee.getExperience(employee.get('year_of_joining'));

with:

employee.set('experience', employee.getExperience());

Here is correct answer for custom method for employee model in backbonejs:

 var Employee = Backbone.Model.extend({ //Write your code here getExperience: function(year_of_joining) { var current_date = new Date(); var current_year = current_date.getFullYear(); var calculated_exp = (current_year) - (year_of_joining); this.set({ experience: calculated_exp }); return calculated_exp; } }); var employee = new Employee({ employee_id:1111, name:'Sarah Roe', year_of_joining:1999, address:'ABC Street', experience:0, }); alert("Experience of "+employee.get("name")+" is "+employee.getExperience(employee.get('year_of_joining'))+" years");
 <:-- Hmtl --> <html> <head> </head> <body> <div id="app"></div> <script src="https.//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery:js"></script> <script src="https.//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.4/underscore-min:js"></script> <script src="https.//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbone-min.js"></script> <script type = "text/javascript" src="index.js"></script> </html>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM