7

Receiver と呼ばれるこのクラスのテストを作成しようとしています。

public void get(People person) {
            if(null != person) {
               LOG.info("Person with ID " + person.getId() + " received");
               processor.process(person);
             }else{
              LOG.info("Person not received abort!");   
              }
        }

テストは次のとおりです。

@Test
    public void testReceivePerson(){
        context.checking(new Expectations() {{          
            receiver.get(person);
            atLeast(1).of(person).getId();
            will(returnValue(String.class));        
        }});
    }

: receiver は Receiver クラス (モックではなくリアル) のインスタンス、processor は person (People クラスのモック オブジェクト) を処理する Processor クラス (モックではなくリアル) のインスタンスです。GetId は int メソッドではなく String であることは間違いありません。

テスト失敗: person.getId() の予期しない呼び出し

私はjMockを使用していますが、助けていただければ幸いです。このgetメソッドを呼び出して適切に実行するときに理解したように、モックする必要がありますperson.getId()。しばらくの間、円を描いて狙撃してきました。

4

2 に答える 2

4

私の理解が正しければ、 行 receiver.get(person); を移動する必要があります。context.checking のスコープの後 - これはテストの実行であり、期待値を設定していないためです。だからこれを試してみてください:

@Test
public void testReceivePerson(){
    context.checking(new Expectations() {{          
        atLeast(1).of(person).getId();
        will(returnValue(String.class));        
    }});
    receiver.get(person);
}
于 2010-05-26T12:07:39.587 に答える
1

また、ここでは人物オブジェクトをスタブ化しているため、atLeast(1) の代わりに allowed() を使用する必要があります。最後に、Person が単なる値型である場合は、クラスをそのまま使用する方がよい場合があります。

于 2010-06-03T20:05:54.397 に答える