public class Holder() {
Contact contact1;
Contact contact2;
}
public class ContactServiceImpl() {
public Contact create(Contact contact) {
// do create
}
}
public class HolderServiceImpl() {
ContactService contactService = new ContactServiceImpl();
public Holder createHolder(Holder holder) {
contactService.create(holder.getContact1());
contactService.create(holder.getContact2());
return holder;
}
}
pulbic class HolderServiceTest() {
ContactServiceImpl contactService = new ContactServiceImpl();
HolderServiceImpl holderService = new HolderServiceImpl();
@Before
public void setUp() {
contactService = EasyMock.createMock(ContactServiceImpl.class);
holderService.setContactServiceImpl(contactService);
EasyMock.expect(contactService.create(EasyMock.isA(Contact.class))).andReturn(new Contact()).anyTimes();
}
@Test
public void testCreate() {
Holder holder = new Holder();
holderService.create(holder)
}
}
リプレイを設定しないと、contactService.createの2回目の呼び出しでエラーが発生します。これはIllegalStateExceptionです。 (期待して呼び出した後に)追加するときIllegalStateException:同じメソッドで二重呼び出しを行ったときの動作定義がありません
は、しかし:
EasyMock.replay(contactService);
私はこのエラーを取得する:
Unexpected method call ContactServiceImpl.create([email protected][
私がPowerMockを使用してみましたが、私は同じ問題を取得します。そのような両方の呼び出しを持つことも可能ですか? Anytime()はその使用のために存在するようですが、それはあまり働いていません。
私は何をしましたか? expectコールの後= setUpメソッドの終了 – Majid
はい。しかし、私はあなたがしたことを正確に行いました。そして私はそれを動作させるために文法エラーの束を修正しなければならなかった。だからあなたの実際のコードは上のコードとは違うと思います。例えば、あなたは 'ContactServiceImpl.create(Contact [] contacts)'や 'ContactServiceImpl.create(Contact ... contacts) 'という型のメソッドを呼び出すようです。 – Henri
createメソッドで配列がどのように見えるのか分かりません。 (私はそれが間違っていたので私のテスト方法を変更しました) – Majid