2011-07-20 8 views
5

ユニットテスト中にNullPointer例外をスローするようなことがいくつかあったので、ユニットテストの制限をどのように克服できるか疑問に思っています。私はこのようになりますクラスを持っている:Mokitoを使用してAkka Actorのログオブジェクトをモックアウト

class LogWriter extends Actor{ 
    def receive{ 
    case x:Timing => log.info(x toString) 
    case x:Event => log.info(x toString) 
    case x:Any => log.warning("Improper message sent to LogWriter, %s".format(x toString)) 
    } 
} 

しかし、の線に沿って何かをSpecs2とMockitoのサポートを使用してユニットテストを試みる:

class LogWriterSpec extends Mokito with Specification{ 
    val mockedLog = mock[Logger] 

    class MockedLogWriter extends LogWriter{ 
    @transient override val log = mockedLog 
    } 

    val writer = actorOf(new MockedLogWriter).start 

    def testTiming = { 
    val message = Timing("testTiming", 15 seconds) 
    writer !! (message, 400) 
    there was one(mockedLog).info(message toString) 
    } 

    def is = "A LogWriter"^
    "should write a Timing message to log.info" ! testTiming^
    end 
} 

前述NullPointerExceptionで結果をコンパイル中:

私はそれがアッカ Logging形質の「ログ」オブジェクトが、コンパイラをオーバーライドいくつかのミックスイン形質を使用するように変更しようとした
[akka:event-driven:dispatcher:global-10] ERROR akka.actor.Actor$ - Problem 
java.lang.NullPointerException 
    at akka.util.Logger.warning_$qmark(Logging.scala:43) 
    at akka.util.Logger.warning(Logging.scala:117) 

それを許さなかった。コンパイラの返答は、「あなたが偶然の間違いをしたくない」という行に沿ったものでした。うん!私はそれを "間違い"したい。

誰かが別の方法を知っていますか?私はMockitoに立ち往生しておらず、何か提案を歓迎する。

答えて

関連する問題