TestAdapter class

用於單元測試的測試配接器。 此配接器可用來模擬將訊息從用戶傳送至 Bot。

Extends

備註

下列範例會設定測試配接器,然後執行簡單的測試:

const { TestAdapter } = require('botbuilder');

const adapter = new TestAdapter(async (context) => {
     await context.sendActivity(`Hello World`);
});

adapter.test(`hi`, `Hello World`)
       .then(() => done());

屬性

activeQueue

從 Bot 取得回應佇列。

conversation

取得或設定目前交談的參考。

enableTrace

取得值,指出是否要傳送追蹤活動。 設定是否要傳送追蹤活動的值。

locale

取得或設定交談的地區設定。

onTurnError

取得或設定錯誤處理程式,這個處理程式可以攔截中間件或應用程式中的例外狀況。 設定錯誤處理程式,以攔截中間件或應用程式中的例外狀況。

template

Activity 範本,該範本會與傳送至受測邏輯的所有活動合併。

方法

addExchangeableToken(string, string, string, string, string)

新增假的可交換令牌,以便稍後進行交換。

addUserToken(string, string, string, string, string)

新增假使用者令牌,以便稍後擷取。

continueConversation(Partial<ConversationReference>, (revocableContext: TurnContext) => Promise<void>)

TestAdapter 不會實作 continueConversation(),而且會在呼叫時傳回錯誤。

createConversation(string, string, string)

建立 ConversationReference。

exchangeToken(TurnContext, string, string, TokenExchangeRequest)

執行令牌交換作業,例如單一登錄。

getAadTokens(TurnContext, string, string[])

使用令牌伺服器將用戶註銷。

getNextReply()

清除佇列,並從 activeQueue 傳回下一個 Bot 回應。

getSignInLink(TurnContext, string)

從令牌伺服器取得可傳送為 SigninCard 一部分的登入連結。

getSignInResource(TurnContext, string, string, string)

取得登入資源。

getTokenStatus(TurnContext, string, string, any)

以異步方式擷取指定使用者每個已設定連線的令牌狀態。 在 testAdapter 中,擷取先前透過 addUserToken 新增的令牌。

getUserToken(TurnContext, string, string)

擷取登入流程中之使用者的 OAuth 令牌。

makeActivity(string)

從文字和目前的交談內容建立訊息活動。

processActivity(string | Partial<Activity>, (context: TurnContext) => Promise<any>)

接收活動,並透過中間件管線執行活動。

send(string | Partial<Activity>)

將某項目傳送至 Bot。 這會傳回新的 TestFlow 實例,可用來新增額外的步驟來檢查 Bot 回復,然後傳送其他活動。

sendTextToBot(string, (context: TurnContext) => Promise<any>)

處理來自使用者的訊息活動。

signOutUser(TurnContext, string, string)

使用令牌伺服器將用戶註銷。

test(string | Partial<Activity>, string | Partial<Activity> | (activity: Partial<Activity>, description?: string) => void, string, number)

將某專案傳送至 Bot,並預期 Bot 會以指定的回復傳回。

testActivities(Partial<Activity>[], string, number)

測試活動清單。

throwOnExchangeRequest(string, string, string, string)

新增指示以在交換要求期間擲回例外狀況。

建構函式詳細資料

TestAdapter((context: TurnContext) => Promise<void> | ConversationReference, Partial<Activity>, boolean)

建立新的 TestAdapter 實例。

new TestAdapter(logicOrConversation?: (context: TurnContext) => Promise<void> | ConversationReference, template?: Partial<Activity>, sendTraceActivity?: boolean)

參數

logicOrConversation

(context: TurnContext) => Promise<void> | ConversationReference

正在測試的 Bot 邏輯。

template

Partial<Activity>

(選擇性) 活動,包含要指派給所接收之所有測試訊息的預設值。

sendTraceActivity

boolean

指出配接器是否應該新增至其佇列中 Bot 所產生的任何追蹤活動。

屬性詳細資料

activeQueue

從 Bot 取得回應佇列。

activeQueue: Partial<Activity>[]

屬性值

Partial<Activity>[]

conversation

取得或設定目前交談的參考。

conversation: ConversationReference

屬性值

ConversationReference

enableTrace

取得值,指出是否要傳送追蹤活動。 設定是否要傳送追蹤活動的值。

boolean enableTrace

屬性值

boolean

值,指出是否要傳送追蹤活動。

locale

取得或設定交談的地區設定。

locale: string

屬性值

string

onTurnError

取得或設定錯誤處理程式,這個處理程式可以攔截中間件或應用程式中的例外狀況。 設定錯誤處理程式,以攔截中間件或應用程式中的例外狀況。

(context: TurnContext, error: Error) => Promise<void> onTurnError

屬性值

(context: TurnContext, error: Error) => Promise<void>

代表異步作業的承諾。

備註

錯誤處理程式會使用這些參數呼叫:

名字 類型 描述
context TurnContext 回合的內容物件。
error Error 擲回 Node.js 錯誤。

template

Activity 範本,該範本會與傳送至受測邏輯的所有活動合併。

template: Partial<Activity>

屬性值

Partial<Activity>

繼承的屬性詳細資料

BotIdentityKey

BotIdentityKey: symbol

屬性值

symbol

繼承自BotAdapter.BotIdentityKey

ConnectorClientKey

ConnectorClientKey: symbol

屬性值

symbol

繼承自BotAdapter.ConnectorClientKey

OAuthScopeKey

OAuthScopeKey: symbol

屬性值

symbol

繼承自BotAdapter.OAuthScopeKey

方法詳細資料

addExchangeableToken(string, string, string, string, string)

新增假的可交換令牌,以便稍後進行交換。

function addExchangeableToken(connectionName: string, channelId: string, userId: string, exchangeableItem: string, token: string)

參數

connectionName

string

要使用的驗證連線名稱。

channelId

string

通道標識碼。

userId

string

用戶標識碼。

exchangeableItem

string

可交換的令牌或資源 URI。

token

string

要儲存的令牌。

addUserToken(string, string, string, string, string)

新增假使用者令牌,以便稍後擷取。

function addUserToken(connectionName: string, channelId: string, userId: string, token: string, magicCode?: string)

參數

connectionName

string

連接名稱。

channelId

string

通道標識碼。

userId

string

用戶標識碼。

token

string

要儲存的令牌。

magicCode

string

(選擇性)要與此令牌產生關聯的選擇性 Magic 程式代碼。

continueConversation(Partial<ConversationReference>, (revocableContext: TurnContext) => Promise<void>)

TestAdapter 不會實作 continueConversation(),而且會在呼叫時傳回錯誤。

function continueConversation(_reference: Partial<ConversationReference>, _logic: (revocableContext: TurnContext) => Promise<void>): Promise<void>

參數

_reference

Partial<ConversationReference>

要繼續之交談的參考。

_logic

(revocableContext: TurnContext) => Promise<void>

在配接器中間件執行之後呼叫的異步方法。

傳回

Promise<void>

代表異步作業的承諾。

createConversation(string, string, string)

建立 ConversationReference。

static function createConversation(name: string, user?: string, bot?: string): ConversationReference

參數

name

string

交談的名稱(亦為id)。

user

string

用戶名稱 (也識別子) 預設值:User1。

bot

string

Bot 的名稱 (也識別符) 預設值:Bot。

傳回

ConversationReference

ConversationReference

exchangeToken(TurnContext, string, string, TokenExchangeRequest)

執行令牌交換作業,例如單一登錄。

function exchangeToken(context: TurnContext, connectionName: string, userId: string, tokenExchangeRequest: TokenExchangeRequest): Promise<TokenResponse>

參數

context
TurnContext

(xref:botbuilder-core.TurnContext) 用於目前與使用者的交談回合。

connectionName

string

要使用的驗證連線名稱。

userId

string

與令牌相關聯的使用者標識碼。

tokenExchangeRequest

TokenExchangeRequest

Exchange 要求詳細數據,可以是要交換的令牌或要交換的 URI。

傳回

Promise<TokenResponse>

如果承諾完成,則會傳回交換的令牌。

getAadTokens(TurnContext, string, string[])

使用令牌伺服器將用戶註銷。

function getAadTokens(_context: TurnContext, _connectionName: string, _resourceUrls: string[]): Promise<[key: string]: TokenResponse>

參數

_context
TurnContext

目前與使用者交談回合的內容。

_connectionName

string

要使用的驗證連線名稱。

_resourceUrls

string[]

要為其擷取令牌的資源URL清單。

傳回

Promise<[key: string]: TokenResponse>

resourceUrl 的字典,指向對應的 TokenResponse。

getNextReply()

清除佇列,並從 activeQueue 傳回下一個 Bot 回應。

function getNextReply(): Partial<Activity>

傳回

Partial<Activity>

佇列中的下一個活動;如果佇列是空的,則為 或未定義。

從令牌伺服器取得可傳送為 SigninCard 一部分的登入連結。

function getSignInLink(context: TurnContext, connectionName: string): Promise<string>

參數

context
TurnContext

目前與使用者交談回合的內容。

connectionName

string

要使用的驗證連線名稱。

傳回

Promise<string>

令牌伺服器的登入連結,可做為 SigninCard 的一部分傳送。

getSignInResource(TurnContext, string, string, string)

取得登入資源。

function getSignInResource(context: TurnContext, connectionName: string, userId?: string, _finalRedirect?: string): Promise<SignInUrlResponse>

參數

context
TurnContext

(xref:botbuilder-core.TurnContext) 用於目前與使用者的交談回合。

connectionName

string

要使用的驗證連線名稱。

userId

string

用戶標識碼

_finalRedirect

string

最終重新導向URL。

傳回

Promise<SignInUrlResponse>

具有新 Promise 物件的

getTokenStatus(TurnContext, string, string, any)

以異步方式擷取指定使用者每個已設定連線的令牌狀態。 在 testAdapter 中,擷取先前透過 addUserToken 新增的令牌。

function getTokenStatus(context: TurnContext, userId: string, includeFilter?: string, _oAuthAppCredentials?: any): Promise<any[]>

參數

context
TurnContext

回合的內容物件。

userId

string

要擷取令牌狀態的使用者標識碼。

includeFilter

string

自選。 要包含之連接的逗號分隔清單。 如果存在,includeFilter 參數會限制這個方法傳回的標記。

_oAuthAppCredentials

any

適用於 OAuth 的 AppCredentials。

傳回

Promise<any[]>

擷取 TokenStatus 物件。

getUserToken(TurnContext, string, string)

擷取登入流程中之使用者的 OAuth 令牌。

function getUserToken(context: TurnContext, connectionName: string, magicCode?: string): Promise<TokenResponse>

參數

context
TurnContext

目前與使用者交談回合的內容。

connectionName

string

要使用的驗證連線名稱。

magicCode

string

(選擇性)選擇性使用者輸入要驗證的程序代碼。

傳回

Promise<TokenResponse>

登入流程中之使用者的 OAuth 令牌。

makeActivity(string)

從文字和目前的交談內容建立訊息活動。

function makeActivity(text?: string): Partial<Activity>

參數

text

string

消息正文。

傳回

Partial<Activity>

適當的訊息活動。

processActivity(string | Partial<Activity>, (context: TurnContext) => Promise<any>)

接收活動,並透過中間件管線執行活動。

function processActivity(activity: string | Partial<Activity>, callback?: (context: TurnContext) => Promise<any>): Promise<any>

參數

activity

string | Partial<Activity>

要處理的活動。

callback

(context: TurnContext) => Promise<any>

要叫用的 Bot 邏輯。

傳回

Promise<any>

代表異步作業的承諾。

send(string | Partial<Activity>)

將某項目傳送至 Bot。 這會傳回新的 TestFlow 實例,可用來新增額外的步驟來檢查 Bot 回復,然後傳送其他活動。

function send(userSays: string | Partial<Activity>): TestFlow

參數

userSays

string | Partial<Activity>

模擬使用者輸入的文字或活動。

傳回

新的 TestFlow 實例,可用來新增額外的步驟來檢查 Bot 回復,然後傳送其他活動。

備註

此範例示範如何傳送訊息,然後確認回應如預期般:

adapter.send('hi')
       .assertReply('Hello World')
       .then(() => done());

sendTextToBot(string, (context: TurnContext) => Promise<any>)

處理來自使用者的訊息活動。

function sendTextToBot(userSays: string, callback: (context: TurnContext) => Promise<any>): Promise<any>

參數

userSays

string

使用者的訊息文字。

callback

(context: TurnContext) => Promise<any>

要叫用的 Bot 邏輯。

傳回

Promise<any>

代表異步作業的承諾。

signOutUser(TurnContext, string, string)

使用令牌伺服器將用戶註銷。

function signOutUser(context: TurnContext, connectionName?: string, userId?: string): Promise<void>

參數

context
TurnContext

目前與使用者交談回合的內容。

connectionName

string

要使用的驗證連線名稱。

userId

string

要註銷的使用者標識碼。

傳回

Promise<void>

test(string | Partial<Activity>, string | Partial<Activity> | (activity: Partial<Activity>, description?: string) => void, string, number)

將某專案傳送至 Bot,並預期 Bot 會以指定的回復傳回。

function test(userSays: string | Partial<Activity>, expected: string | Partial<Activity> | (activity: Partial<Activity>, description?: string) => void, description?: string, _timeout?: number): TestFlow

參數

userSays

string | Partial<Activity>

模擬使用者輸入的文字或活動。

expected

string | Partial<Activity> | (activity: Partial<Activity>, description?: string) => void

Bot 所傳送回復的預期文字或活動。

description

string

(選擇性)測試案例的描述。 如果未提供,則會產生一個 。

_timeout

number

(選擇性) 等候 Bot 回應的毫秒數。 預設為 3000的值。

傳回

新的 TestFlow 物件,將這個交換附加至模型化交換。

備註

這隻是呼叫 send()assertReply()的包裝函式。 這是協助程式提供的常見模式。

adapter.test('hi', 'Hello World')
       .then(() => done());

testActivities(Partial<Activity>[], string, number)

測試活動清單。

function testActivities(activities: Partial<Activity>[], description?: string, timeout?: number): TestFlow

參數

activities

Partial<Activity>[]

活動的陣列。

description

string

(選擇性)測試案例的描述。 如果未提供,則會產生一個 。

timeout

number

(選擇性) 等候 Bot 回應的毫秒數。 預設為 3000的值。

傳回

新的 TestFlow 物件,將這個交換附加至模型化交換。

備註

具有 「bot」 角色的每個活動都會以 assertReply() 處理,而所有其他活動都會以 send() 的使用者訊息處理。

throwOnExchangeRequest(string, string, string, string)

新增指示以在交換要求期間擲回例外狀況。

function throwOnExchangeRequest(connectionName: string, channelId: string, userId: string, exchangeableItem: string)

參數

connectionName

string

連接名稱。

channelId

string

通道標識碼。

userId

string

用戶標識碼。

exchangeableItem

string

可交換的令牌或資源 URI。

繼承的方法的詳細資料

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

以異步方式繼續與用戶的對話,可能是經過一段時間之後。

function continueConversationAsync(claimsIdentity: ClaimsIdentity, reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

參數

claimsIdentity

ClaimsIdentity

交談 ClaimsIdentity

reference

Partial<ConversationReference>

部分 ConversationReference 至交談以繼續。

logic

(context: TurnContext) => Promise<void>

在配接器中間件執行之後呼叫的異步方法。

傳回

Promise<void>

代表異步作業的承諾

繼承自BotAdapter.continueConversationAsync

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, string, (context: TurnContext) => Promise<void>)

以異步方式繼續與用戶的對話,可能是經過一段時間之後。

function continueConversationAsync(claimsIdentity: ClaimsIdentity, reference: Partial<ConversationReference>, audience: string, logic: (context: TurnContext) => Promise<void>): Promise<void>

參數

claimsIdentity

ClaimsIdentity

交談 ClaimsIdentity

reference

Partial<ConversationReference>

部分 ConversationReference 至交談以繼續。

audience

string

一個表示主動訊息接收者的值。</param>

logic

(context: TurnContext) => Promise<void>

在配接器中間件執行之後呼叫的異步方法。

傳回

Promise<void>

代表異步作業的承諾

繼承自BotAdapter.continueConversationAsync

continueConversationAsync(string, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

以異步方式繼續與用戶的對話,可能是經過一段時間之後。

function continueConversationAsync(botAppId: string, reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

參數

botAppId

string

Bot 的應用程式識別碼。 單一租用戶中會忽略此參數配接器(控制台、測試等),但對於多租使用者感知的 BotFrameworkAdapter 至關重要。

reference

Partial<ConversationReference>

部分 ConversationReference 至交談以繼續。

logic

(context: TurnContext) => Promise<void>

在配接器中間件執行之後呼叫的異步方法。

傳回

Promise<void>

代表異步作業的承諾

繼承自BotAdapter.continueConversationAsync

createConversationAsync(string, string, string, string, ConversationParameters, (context: TurnContext) => Promise<void>)

在指定的通道上建立交談。

function createConversationAsync(_botAppId: string, _channelId: string, _serviceUrl: string, _audience: string, _conversationParameters: ConversationParameters, _logic: (context: TurnContext) => Promise<void>): Promise<void>

參數

_botAppId

string

Bot 的應用程式識別碼。

_channelId

string

通道的標識碼。

_serviceUrl

string

通道的標識碼。

_audience

string

連接器的物件。

<param name=“conversationParameters”>
_conversationParameters

ConversationParameters

用來建立交談的交談資訊

_logic

(context: TurnContext) => Promise<void>

要呼叫所產生 Bot 回合的方法。

傳回

Promise<void>

代表異步操作的承諾

備註

若要開始交談,您的 Bot 必須知道其帳戶資訊和該通道上的用戶帳戶資訊。 大部分_channels只支援起始直接訊息(非群組)交談。

配接器會嘗試在通道上建立新的交談,然後透過其中間件管線將 conversationUpdate 活動傳送至邏輯方法。

如果交談是使用指定的使用者建立的,活動的交談標識碼將會包含新交談的標識碼。

繼承自BotAdapter.createConversationAsync

use((context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[])

將中間件新增至配接器的管線。

function use(middlewares: (context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[]): this

參數

middlewares

(context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[]

要加入的中間件或中間件處理程式。

傳回

this

更新的配接器物件。

備註

中間件會在初始化時新增至配接器。 每回合,配接器都會依您新增它的順序來呼叫其中間件。

繼承自BotAdapter.use