1. ホーム
  2. java

[解決済み] ScalaでInstanceofチェックを行う方法(Test)

2022-05-17 10:25:57

質問

ScalaTestをJavaプロジェクトに組み込もうとしています。すべてのJUnitテストをScalaTestsに置き換えています。ある時点で、私はGuiceのインジェクタが正しい型を注入するかどうかをチェックしたいと思っています。Javaでは、私はこのようなテストを持っています。

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);
    }
}

しかし、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)
        }
    }
}

という値で文句を言います。 instanceof のメンバーでない Door / Window / Roof . を使うことはできないのでしょうか? instanceof をScalaで使うことはできないのでしょうか?

どのように解決するのですか?

ScalaはJavaではありません。Scalaには演算子 instanceof というパラメトリックメソッドがあります。 isInstanceOf[Type] .

をご覧いただくのも楽しいかもしれません。 ScalaTestクラッシュコース .