#javascript #json #testing #backbone.js #jasmine
#javascript #json #тестирование #backbone.js #jasmine
Вопрос:
Проблема с методом getExperience. не знаю, почему я получаю это, может кто-нибудь, пожалуйста, помочь мне в этом. Ошибка: тестирование пользовательского метода в модели Employee Тестирование метода getExperience модели Employee Проверка опыта в модели Employee после СБОЯ выполнения метода getExperience Ожидалось, что 0 будет равно 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>
Ответ №1:
<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>
Комментарии:
1. 0 Из вопроса, заданного Hacker Rank, есть несколько тестовых примеров, из которых один обычно терпит неудачу. в котором указано ожидаемое значение 22 вместо 0. Итак, полный ответ размещен здесь. Итак, ответ на вопрос
Ответ №2:
Вы никогда не устанавливаете новое значение для experience
атрибута вашей модели. Поскольку для прохождения вашего теста вам следует использовать: expect(employee.getExperience()).toBe(calculated_exp);
Обратите внимание, что аргумент experience никогда не используется вашей функцией getExperience.
Или заменить:
employee.getExperience(employee.get('year_of_joining'));
с:
employee.set('experience', employee.getExperience());
Ответ №3:
Вот правильный ответ для пользовательского метода для модели сотрудника в 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>