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

Newer Version Available

This content describes an older version of this product. View Latest

ConnectApi コードのテスト

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

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

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

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

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

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

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

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

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

重要

次の例は、ConnectApi.FeedElementPage を構成し、特定の組み合わせのパラメータを指定して getFeedElementsFromFeed がコールされたときにそれが返されるように登録するテストを示しています。
1global class NewsFeedClass {
2    global static Integer getNewsFeedCount() {
3        ConnectApi.FeedElementPage elements = 
4            ConnectApi.ChatterFeeds.getFeedElementsFromFeed(null,
5                ConnectApi.FeedType.News, 'me');
6        return elements.elements.size();
7    }
8}
1@isTest
2private class NewsFeedClassTest {
3    @IsTest
4    static void doTest() {
5        // Build a simple feed item
6        ConnectApi.FeedElementPage testPage = new ConnectApi.FeedElementPage();
7        List<ConnectApi.FeedItem> testItemList = new List<ConnectApi.FeedItem>();
8        testItemList.add(new ConnectApi.FeedItem());
9        testItemList.add(new ConnectApi.FeedItem());
10        testPage.elements = testItemList;
11
12        // Set the test data
13        ConnectApi.ChatterFeeds.setTestGetFeedElementsFromFeed(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}