この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ConnectApi コードのテスト

すべての Apex コードと同様に、Chatter in Apex コードにはテストカバー率が必要です。

Chatter in Apex メソッドはシステムモードでは実行されず、現在のユーザ (コンテキストユーザとも呼ばれる) のコンテキストで実行されます。メソッドは、現在のユーザがアクセス権を持つものすべてにアクセスできます。Chatter in Apex は、runAs システムメソッドをサポートしていません。

大部分の Chatter in Apex メソッドには、実際の組織データへのアクセス権が必要であり、@IsTest(SeeAllData=true) のマークが付けられたテストメソッドで使用されなければ失敗します。

ただし、getFeedItemsFromFeed などの一部の Chatter in Apex メソッドでは、テストで組織データにアクセスすることはできません。出力をテストコンテキストで返すように登録する特別なテストメソッドとともに使用する必要があります。メソッドが setTest メソッドを必要とする場合、要件はそのメソッドの「Usage」セクションに記述されています。

テストメソッド名は、通常のメソッド名の先頭に setTest プレフィックスが付けられます。テストメソッドの署名 (パラメータの組み合わせ) は、通常のメソッドの署名と一致します。たとえば、通常のメソッドに 3 つのオーバーロードがある場合、テストメソッドには 3 つのオーバーロードがあります。

Chatter in Apex テストメソッドの使用方法は、Apex での Web サービスのテスト方法と類似しています。まず、メソッドで返すデータを作成します。データを作成するには、出力オブジェクトを作成し、それらのプロパティを設定します。すべての非抽象出力クラスに非引数コンストラクタを使用して、オブジェクトを作成できます。

データを作成したら、テストメソッドをコールして、データを登録します。テストする通常のメソッドと同じ署名を持つテストメソッドをコールします。

テストデータを登録したら、通常のメソッドを実行します。通常のメソッドを実行すると、登録済みデータが返されます。

テストメソッドの署名には、通常のメソッドの署名と一致するものを使用する必要があります。通常のメソッドをコールするときに、一致するパラメータセットを使用してデータが登録されていなかった場合、例外を受け取ります。

重要

次の例は、ConnectApi.FeedItemPage を構成し、特定の組み合わせのパラメータを指定して getFeedItemsFromFeed がコールされたときにそれが返されるように登録するテストを示しています。
1global class NewsFeedClass {
2    global static Integer getNewsFeedCount() {
3        ConnectApi.FeedItemPage items = 
4            ConnectApi.ChatterFeeds.getFeedItemsFromFeed(null, 
5                   ConnectApi.FeedType.News, 'me');
6        return items.items.size();
7    }
8}
1@isTest
2private class NewsFeedClassTest {
3    @IsTest
4    static void doTest() {
5        // Build a simple feed item
6        ConnectApi.FeedItemPage testPage = new ConnectApi.FeedItemPage();
7        List<ConnectApi.FeedItem> testItemList = new List<ConnectApi.FeedItem>();
8        testItemList.add(new ConnectApi.FeedItem());
9        testItemList.add(new ConnectApi.FeedItem());
10        testPage.items = testItemList;
11        
12        // Set the test data
13        ConnectApi.ChatterFeeds.setTestGetFeedItemsFromFeed(null, 
14                   ConnectApi.FeedType.News, 'me', testPage);
15
16        // The method returns the test page, which we know has two items in it.
17        Test.startTest();
18        System.assertEquals(2, NewsFeedClass.getNewsFeedCount());
19        Test.stopTest();
20    }
21}