ConnectApi コードのテスト
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 サービスのテスト方法と類似しています。まず、メソッドで返すデータを作成します。データを作成するには、出力オブジェクトを作成し、それらのプロパティを設定します。すべての非抽象出力クラスに非引数コンストラクタを使用して、オブジェクトを作成できます。
データを作成したら、テストメソッドをコールして、データを登録します。テストする通常のメソッドと同じ署名を持つテストメソッドをコールします。
テストデータを登録したら、通常のメソッドを実行します。通常のメソッドを実行すると、登録済みデータが返されます。
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17global class NewsFeedClass {
18 global static Integer getNewsFeedCount() {
19 ConnectApi.FeedItemPage items =
20 ConnectApi.ChatterFeeds.getFeedItemsFromFeed(null,
21 ConnectApi.FeedType.News, 'me');
22 return items.items.size();
23 }
24}1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17@isTest
18private class NewsFeedClassTest {
19 @IsTest
20 static void doTest() {
21 // Build a simple feed item
22 ConnectApi.FeedItemPage testPage = new ConnectApi.FeedItemPage();
23 List<ConnectApi.FeedItem> testItemList = new List<ConnectApi.FeedItem>();
24 testItemList.add(new ConnectApi.FeedItem());
25 testItemList.add(new ConnectApi.FeedItem());
26 testPage.items = testItemList;
27
28 // Set the test data
29 ConnectApi.ChatterFeeds.setTestGetFeedItemsFromFeed(null,
30 ConnectApi.FeedType.News, 'me', testPage);
31
32 // The method returns the test page, which we know has two items in it.
33 Test.startTest();
34 System.assertEquals(2, NewsFeedClass.getNewsFeedCount());
35 Test.stopTest();
36 }
37}