В настоящее время я изучаю JavaScript и весь свой тестовый проход, но одна из моих функций не работает должным образом.JavaScript for-loop не возвращает элемент, и тест не проходит
Вот тест
it("should get record by its id", function(){
customer1.setFunds(100);
customer1.buy(record1, store1);
customer1.buy(record2, store1);
var item = customer1.getRecord("xyz123");
console.log(customer1);
is.equal("Nirvana", item.artist);
}),
Вот объект
record2 = new Record("Nirvana", "In Utero", 25, 11, "xyz123");//the last attribute is the id
Вот функция Я тестирую
getRecord: function(id){
for(var i = 0; i<this.boughtItems.length; i+=1){
if(this.boughtItems[i].id === id){
return this.boughtItems[i];
}else{
return "The item doesn't exist";
}
}
Дело в том, что this.boughtItems состоит из этого элемента I я ищу, и функция не может вернуть его. Я знаю, что объекты JS иногда работают странно, но это очень расплывчато для меня. Если я не слепой и не вижу простой проблемы, происходящей там
Спасибо!
обновить запись не имеет каких-либо функций, возложенных на него, только атрибуты
var Record = function(artist, title, price, stock, id){
this.artist = artist;
this.title = title;
this.price = price;
this.stock = stock;
this.id = id;
};
UPDATE2 метод покупки()
buy: function(product, store){
if(this.funds >= product.price){
store.sell(product);
var itemToBuy = new Record(product.artist, product.title, product.price, 1, product.id);
this.boughtItems.push(itemToBuy);
this.funds -= itemToBuy.price;
}else{
return "You cannot afford to buy this item";
}
}
и это даже страннее, в моих тестах, Объект «item» появляется как «Вы не можете позволить себе купить этот товар»
Можем ли мы увидеть прототип класса «Запись», который вы используете? – forrestmid
обновлено :) спасибо! – bwielk
Можем ли мы увидеть метод 'buy()' для клиента? –