0

サブアカウントが自分の twilio アカウントで既に見つかった場合に true を返すメソッドの単体テストを作成しています。これを Mockito でモックしようとしていますが、List を AccountList にキャストするキャスト エラーが発生します。私はmockitoのドキュメントに目を通しましたが、何かを見落としている可能性があります。

これはテストです:

        @Mock
TwilioRestClient client;

@Mock
AccountList accountList;

@Mock
Iterator<Account> iterator;

@Mock
Account account;

@Test
public void testShouldReturnTrueIfAccountNameFound() {
        final List<Account> list = Arrays.asList(account);

        when(client.getAccounts()).thenReturn((AccountList) list);
        when(account.getFriendlyName()).thenReturn("test");
        when(accountList.iterator()).thenReturn(list.iterator());
    MyTwilioAccountStore store = null;
    store = new MyTwilioAccountStore(client);

    Assert.assertTrue(store.subAccountExists("test"));  
}

そして、これは私がテストしている方法です。コンストラクターに TwilioRestClient を挿入しています。

        /**
 * class constructor
 * 
 * @param client
 */
public MyTwilioAccountStore(TwilioRestClient client) {
    fClient = client;
}


/**
 * rest client getter
 * 
 * @return RESTClient
 */
public TwilioRestClient getRestClient() {
    return fClient;
}
     /**
 * Check if a sub account already exists
 * 
 * @param friendlyName
 * @return boolean
 */
public boolean subAccountExists(String friendlyName) {
    // Build a filter for the AccountList
    Map<String, String> params = new HashMap<String, String>();
    params.put("FriendlyName", friendlyName);
    AccountList accounts = getRestClient().getAccounts(params);

    // Loop over accounts
            // This is where I get NPE
    for (Account account : accounts) {
        if (account.getFriendlyName().equalsIgnoreCase(friendlyName)) {
            return true;
        }
    }

    return false;
}

これは、Twilio ソース コードの getAccounts です。

    /**
 * Get all accounts. For more info: {@link <a
 * href="http://www.twilio.com/docs/api/rest/account"
 * >http://www.twilio.com/docs/api/rest/account</a>}
 *
 * @return the list of accounts.
 */
public AccountList getAccounts() {
    return this.getAccounts(new HashMap<String, String>());
}

AccountList を正しくモックするにはどうすればよいですか?

4

2 に答える 2