Sto cercando di incorporare ScalaTest nel mio progetto Java, sostituendo tutti i test JUnit di ScalaTests. A un certo punto, voglio controllare se l'iniettore di Guice inietta il tipo corretto. In Java, ho un test come questo:Come eseguire un'istanza di controllo con Scala (Test)
public class InjectorBehaviour {
@Test
public void shouldInjectCorrectTypes() {
Injector injector = Guice.createInjector(new ModuleImpl());
House house = injector.getInstance(House.class);
assertTrue(house.door() instanceof WoodenDoor);
assertTrue(house.window() instanceof BambooWindow);
assertTrue(house.roof() instanceof SlateRoof);
}
}
Ma ho un problema a fare lo stesso con ScalaTest:
class InjectorSpec extends Spec {
describe("An injector") {
it("should inject the correct types") {
val injector = Guice.createInjector(new ModuleImpl)
val house = injector.getInstance(classOf[House])
assert(house.door instanceof WoodenDoor)
assert(house.window instanceof BambooWindow)
assert(house.roof instanceof SlateRoof)
}
}
}
Esso denunce che il valore instanceof non è membro di porte/finestre/Tetto. Non posso usare instanceof in questo modo in Scala?
beh, questo in realtà non risponde alla domanda. ScalaTest ha il supporto integrato per il controllo dei tipi. Guarda la risposta di @ martin-g – maasg
La mia risposta ha quasi 5 anni. La tecnica 'anInstance mustBe an [SomeClass]' mostrata da @ martin-g non esisteva allora (come afferma correttamente). Se volevi essere tecnico su questo, la mia risposta risponde perfettamente alla domanda dell'OP, che è: "Non posso usare l'istanza di questo modo in Scala?". Entrambi gli approcci funzionano fino ad oggi e sono quindi entrambe risposte corrette. Buona giornata. – agilesteel
Come fare se "Digitare" è un tratto? – Lobo