das Merkmal Given (vereinfacht)Scala :: Lazy Wert ist Null, es sei denn gedruckt?
trait A {
val eventStream: EventStream
val credentialsStorage = // something here
val userStorage = // something here
val crypto = // something here
...
lazy val authSvc = new CoreAuthentication(credentialsStorage, new AuthenticationProviderResolver, userStorage, eventStream, crypto)
}
class T extends A with TraitProvidingEventStream with FlatSpec with [lot of another traits here] {
val eventStream = systemFromTraitProvidingEventStream.eventStream
"This" should "work" in {
println(authSvc) // this is "magic"
val user = authSvc.doSomethingWithUser(...);
}
}
wenn ich Linie als markiert entfernen // Das ist „Magie“, dann werde ich Nullpointer in der nächsten Zeile erhalten, so authSvc null ist.
Was kann da falsch sein?
Ich war nicht in der Lage sein, sauber kleinen Testfall dafür zu schaffen, in der Regel das funktioniert gut
Sind Sie sicher, dass der Zugriff auf 'authSvc' eine NPE auslöst und nicht die Methode' doSomethingWithUser' oder ihre Parameter? – sschaef
absolut, auch wenn es NPE irgendwo in doSomethingWithUser werfen würde - dann hat println nichts zu tun. – jdevelop
Ich möchte dies debuggen, aber nicht sicher, wie. Jede Hilfe wird geschätzt. – jdevelop