Cant lösen Fehler: #<Doppel (anonym)> erhalten unerwartete Nachricht :[]= mit (:rule_code, 1)
Im ein Ringen um Lösung der oben genannten Fehler bekomme ich beim testen Folgendes:
def add_rule_code new_rule
count = list[:multiple_item_rules].count + list[:total_price_rules].count + 1
new_rule[:rule_code] = count
end
mit dem folgenden test:
it "adds a unique rule code" do
item_rule = double( {rule_type: "item", item_code: 001, number_of_items: 2, new_item_price: 8.50} )
rules.add_rule_code item_rule
expect(rules.list[:multiple_item_rules][:rule_code]).to eq 1
end
Bekomme ich die folgende Fehlermeldung:
1) Promotional_Rules New rules adds a unique rule code
Failure/Error: new_rule[:rule_code] = count
#<Double (anonymous)> received unexpected message :[]= with (:rule_code, 1)
# ./lib/Promotional_Rules.rb:21:in `add_rule_code'
# ./spec/promotional_rules_spec.rb:27:in `block (3 levels) in <top (required)>'
Ich sicher eine einfache Lösung, aber ich kann nicht herausfinden, trotz googeln usw. Jede Hilfe wäre toll.
Dank
- Tritt der Fehler Punkt für jede Linie im besonderen?
- Stellen Sie sicher, dass
new_rule
ist, was Sie denken, es ist. Meine Vermutung ist, dass es nicht - Die Letzte Zeile in der Methode, "new_rule[:rule_code] = count" aus der Leitung im test " - Regeln.add_rule_code item_rule"
- wenn ich "p" neue Regel an der Spitze der Methode gibt er mir "#<Doppel (anonym)>"
- In add_rule, es haben alle die erwarteten Werte?
rule_type
?item_code
? etc? - wenn ich den folgenden Code an der Spitze der Methode: "p new_rule.rule_type p new_rule.item_code p new_rule.number_of_items p new_rule.new_item_price" ich: ""item" 1 2 8.5 "
- Versuchen
new_rule.rule_code = count
- es gibt den gleichen Fehler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird, die Sie anrufen
new_rule[:rule_code]
aber die doppelte reagiert nicht auf:[]
.Einen Weg, den Sie können, damit es funktioniert ist:
allow(new_rule).to receive(:[])
Sehen RSpec-Mocks-Methode Stubs.
Ich weiß nicht, warum Sie mit einem Doppelzimmer. Ich denke, dass Sie möglicherweise verwenden möchten, eine Fabrik.
item_rule = ItemRule.new( ... )
.