2011-05-20 1 views
0

J'ai une application simple de panier et je suis en train de tester la méthode suivante:Impossible de retirer l'article du panier. Spec échoue

def add(item_id) 
    item = Product.find(item_id) 
    args = { 
     :product_id=>item.id, 
     :seller_id=>item.shop_id, 
     :price =>item.price 
    } 
    cart_items<<CartItem.create(args) 
    end 

    def remove(item_id) 
    cart_items.where(:product_id=>item_id).map(&:destroy) 
    end 

La spécification pour cette chose est

it "should remove a product from the cart" do 
    cart = Cart.new 
    item = Product.create(:price=>3450,:id=>1,:shop_id=>1) 
    cart.add(item.id)  
    cart.should_not be_empty 

    cart.remove(item.id) 
    cart.should be_empty 
    end 

Peu importe ce que je fais, je ne peux pas faites-le passer. Le cart_item.length est toujours égal à 1. Vous ne savez pas pourquoi cela se produit. S'il vous plaît aider.

Répondre

0

Je suppose que le problème est que vous n'enregistrez à aucun moment le chariot dans la base de données.

0

J'ai souvent constaté que c'est parce que vous ne rechargez pas à partir de la base de données après avoir supprimé l'élément.

cart.reload 
cart.should be_empty 
+0

Je reçois cette erreur maintenant: Impossible de trouver le chariot sans ID – picardo

+0

Vous ne savez pas où vous obtenez l'erreur - le backtrace vous le dit-il? Où se passe la découverte? –

+0

J'utilise autotest, donc pas de backtrace. :(Mais l'erreur provient de la ligne où l'appel à recharger est en cours – picardo