Sie finden David Pollaks Antwort zu derselben Frage in der Liftwebgruppe.
In diesem Fall ist BindHelpers
ein Merkmal und keine Klasse. Lassen Sie foo()
zu einer in BindHelpers
definierten Methode werden, um darauf zuzugreifen, können Sie entweder.
Verwenden Sie es über das Begleitobjekt: BindHelpers.foo()
Mische das Merkmal BindHelpers
in einer Klasse und bin so in der Lage, auf die darin enthaltenen Methoden zuzugreifen.
Zum Beispiel:
%Vor% Die gleichen Techniken werden in Scalatest zum Beispiel für ShouldMatchers
verwendet.
Ich finde, dass diese Art von Code im Lift-Framework sehr gebräuchlich ist, geschrieben wie folgt:
%code%
Was bedeutet das?
Es ist interessant für ein %code% , seine Begleitklasse zu erweitern, da es den gleichen Typ wie die Klasse hat.
Wenn %code% BindHelpers nicht erweitert hat, wäre es vom Typ %code% .
Sie finden David Pollaks Antwort zu derselben Frage in der Liftwebgruppe.
In diesem Fall ist %code% ein Merkmal und keine Klasse. Lassen Sie %code% zu einer in %code% definierten Methode werden, um darauf zuzugreifen, können Sie entweder.
Verwenden Sie es über das Begleitobjekt: %code%
Mische das Merkmal %code% in einer Klasse und bin so in der Lage, auf die darin enthaltenen Methoden zuzugreifen.
Zum Beispiel:
%Vor%Die gleichen Techniken werden in Scalatest zum Beispiel für %code% verwendet.
Es könnte sein, dass das Muster hier anders ist. Ich weiß Lift nicht, um das zu beantworten, aber es gibt ein Problem mit %code% darin, dass sie nicht mockbar sind. Wenn Sie also alles in einem %code% definieren, das verspottet werden kann, und das Objekt dann einfach erweitern, können Sie die Klasse vortäuschen und sie anstelle des Objekts in Ihren Tests verwenden.
Es könnte sein, dass das Muster hier anders ist. Ich weiß Lift nicht, um das zu beantworten, aber es gibt ein Problem mit object
darin, dass sie nicht mockbar sind. Wenn Sie also alles in einem class
definieren, das verspottet werden kann, und das Objekt dann einfach erweitern, können Sie die Klasse vortäuschen und sie anstelle des Objekts in Ihren Tests verwenden.
Es ist interessant für ein object
, seine Begleitklasse zu erweitern, da es den gleichen Typ wie die Klasse hat.
Wenn object BindHelpers
BindHelpers nicht erweitert hat, wäre es vom Typ BindHelpers$
.
Tags und Links scala