Hallo,

wenn du die Methode "get_geocode" auf der Klasse "Hotspot" rufen möchtest, solltest du die Methode mit einem vorangeschriebenen "self." definieren, damit sie im Klassen-Kontext ausgeführt werden kann. Also sowas in der Art:

def self.get_geocode(address)
   g = MultiGeocoder.geocode(address)
return {:success => true, :lat => g.lat, :lng => g.lng, :city => g.city }
 end

Schöne Grüße,
Benjamin

Am 01.02.2009 um 15:43 schrieb Christian Beier:

Jan Krutisch wrote:
- private Methoden in funktionalen Tests abtesten zu wollen ist ein
Code Smell. Funktionale Tests sollten (so sehe ich das) den Controller "von aussen" testen. Es sind eben KEINE Unit-Tests. Du m�sstest also
eher die Actions, die diese Methode verwenden auf ihre richtige
Funktion testen.

Ja, du hast natürlich recht. Ich wollte mit dem Test erst einmal
"kleinteilig" die korrekte Funktion bzw. korrekten Rückgabewert testen.
Da der Kram aber eh ins Model gehört, kann das ja über Unit Tests
erledigt werden.

Wie gesagt, ich beschäftige mich erst frisch mit Test und Rails
überhaupt. Im Moment muss ich auch erst noch herausfinden wie fein das
Testnetz geschrieben werden sollte, damit es a) nicht unnötig viele
werden und b) Sachen ungetestet bleiben und sich so doch Fehler
einschleichen können. So eine richtig gute Abhandlung die die
Testgetriebene Entwicklung in allen Bereichen behandelt (und auch das
Zusammenspiel), habe ich leider noch nicht gefunden.

- Das ganze riecht allerdings danach als w�re die Methode
grunds�tzlich im Controller falsch aufgehoben, da es sich vermutlich
um Dom�nen-Logik (klingt furchtbar auf deutsch, finde ich) handelt,
die �blicherweise ins Modell geh�rt. Wenn ich Deinen Code richtig aus Deinen Schnippseln extrapoliere klingt das alles danach als w�rdest Du
eigentlich auf Deinem Modell ein virtuelles Attribute "geocode"
anlegen wollen, was genau das macht, was bei Dir die Methode macht.

Ich dachte mir schon, das die Mehode im Controller nicht wirklich gut
aufgehoben ist. Es geht mir in der Methode grundsätzlich darum, weitere
Parameter zu einer Ortsangabe zu erhalten. In diesem Fall also aus
Geokoordinaten, möchte ich den Ort erhalten, um diesen in einem View
auszugeben.

Einfach die geschriebene Methode

 def get_geocode(address)
   g = MultiGeocoder.geocode(address)
   return {:success => true, :lat => g.lat, :lng => g.lng, :city =>
g.city }
 end

in das Model zu packen funktioniert ja (wohl) nicht. Zumindest bekomme
ich es so nicht vom Controller aus angesprochen (Hotspot.get_geocode) ->
NoMethodError: undefined method `get_geocode' for #<Class:0x243b438>


Grüße,
Christian
--
Posted via http://www.ruby-forum.com/.
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an