0

コード:

public class AccountService(){

private ObjectMapper mapper = new ObjectMapper();

public Account getAccount(){
    try {

        ClientResponse response = RestUtility.getAccounts();

        if(CLientResponse.OK.Status == response.getClientResponseStatus()){
            return mapper.readValue(response.getEntity(String.class), Account.class)
        } 

    } catch(Exception e){
        log.error(e.getMessage(), e);
    }

    return null;
    }
}

このサービスをモックするにはどうすればよいですか? RestUtility は静的ユーティリティであり、mockito でモックすることはできません。私が望むのは、メソッドが「モック」アカウントのリストを返すことだけです。このアーキテクチャでも可能ですか?

4

2 に答える 2

1

statick メソッドをモックするには、を使用できますPowerMockRestUtilityまたは、クラスにラッパーを作成できます。このラッパーへの参照は、コンストラクターで提供する必要があります。

于 2013-11-07T07:40:27.930 に答える
0

に変更すると

public class AccountService() {
    protected ClientResponse getResponse() { return RestUtility.getAccounts(); }

    public Account getAccount() {
        try {
            ClientResponse response = getResponse();
            ...
        }
}

getResponse()Mockito または他のモック フレームワークを使用してモックアウトするのは簡単です。またはさらに簡単:

public class AccountServiceTest {
    class TestableAccountService extends AccountService {
        @Override
        protected ClientResponse getResponse() { return <yourmockresponsegoeshere>; }
    }

    @Test
    public void testMe() {
        AccountService ac = new TestableAccountService();
        assertThat( ac.getAccount.size() , equalTo( 1 ) );
        // etc
        ...
    }

乾杯、

于 2013-11-07T07:46:44.520 に答える