2017-11-09 7 views
-1

をスパイを使用した場合、ボイド方法でnullポインタ例外を取得する私は、サービスクラスここJUnitテストで

の「tableInfo」メソッドをテストする必要がありますが、私のJUnitテストスクリプトです:

class JUnitTest extends Specification { 

Service service 
Table table = GroovyMock(Table) 


def spy = Spy(Service){ 
    getTable() >> table 
     } 

def setup() { 
    service = new Service(    
      table: table 
      ) 
} 

def "when table contains information"() { 

    given: 
    spy.internalMethod(*_) >> [Bean.BEAN_SUCCESS] 
    table.getUnits(*_) >> {}   
    Response response = new Response() 


    when: 
    spy.tableInfo(.....) 


    then: 
    response.status == 0 
    response.error == [] 

} 

質問:私は取得しています

以下のようにtable.getUnitsでnullポインタ例外は、 "java.lang.NullPointerExceptionが: nullオブジェクト上)(メソッドのgetUnitsを呼び出すことはできません"

+0

nullオブジェクトを取得する場所を確認し、nullオブジェクトが戻ったときにgetUnits()メソッドを呼び出しません。 – NandhaKumar

+0

私は 'テーブル'クラスにnullオブジェクトを取得しています。私はテストしたいメソッドでtable.getUnits()を呼び出しています。そのメソッドの呼び出しが必要ですright – Muthulakshmi

答えて

0

毎回メソッドを呼び出す場合は、このメソッドを呼び出してください。しかし、例外的な手段を知っておく必要があるので、以下のようにtable.getUnits()メソッドを呼び出す前に条件をチェックするだけです。

+0

私はそのtable.getUnits()メソッドが実行され、nullにするべきではありません..なぜ私はクラス 'テーブル'でnullを取得していますか?何か考えているのですか? – Muthulakshmi

+0

groovymockを使って 'table'クラスを嘲笑しました。そのメソッドの中に入るべきではなく、nullを取得しないでください。 – Muthulakshmi

+0

毎回table.getUnits()メソッドが実行されるようにしたい場合は、getUnits()から返される型オブジェクトをチェックしてください。 getUnits()関数からnullオブジェクトが返された場合は、例外が発生していることを確認してください。テーブルにNULLオブジェクトを格納したり、戻したりしないでください。 – NandhaKumar