2017-10-11 1 views
0

これはバグかどうかわかりませんが、間違っているだけです。 、Kodein factory bindingsがNotFoundExceptionをスローしています

class KodeinConfidenceTest { 
    @Test 
    fun testThatKodeinWorks() { 
     val kodein = Kodein { 
      bind<Dice>() with factory { sides: Int -> RandomDice(sides) } 
     } 
     val d:Dice = kodein.instance(5) 
    } 
} 
open class Dice 
data class RandomDice(val sides:Int) : Dice() 

...しかし、これはNotFoundExceptionに

com.github.salomonbrys.kodein.Kodein$NotFoundException: No provider found for bind<Dice>("5") with ? { ? } 
Registered in Kodein: 
    bind<Dice>() with factory { Int -> RandomDice } 

答えて

1

の原因となるあなたはkodein.instance(5)を書くべきではありません:私はkodein工場バインディングはこれ以外の方法で呼ばれるべきであることを述べている文書に何も表示されません書く必要がありますkodein.instance(tag = 5)

これでエラーが表示されました。ファクトリーへの引数ではなく、タグ(バインディングを区別する)を設定しています。 Kodein 4では

、構文は、私は現在、この構文はkodein.instance(arg = 5)に変更されるには、Kodein 5(はまだありませリリースschdule)の研究開発をしていますいずれかkodein.with(5).instance()kodein.factory<Int, Dice>().invoke(5)

です。

関連する問題