共用方式為


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());

建構函式

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

建立新的 TestAdapter 實例。

屬性

activeQueue

從 Bot 取得回應佇列。

conversation

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

enableTrace

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

locale

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

onTurnError

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

template

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

繼承的屬性

BotIdentityKey
ConnectorClientKey
OAuthScopeKey

方法

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)

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

繼承的方法

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

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

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

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

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

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

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

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

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

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

建構函式詳細資料

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>

具有新 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

值,表示主動式訊息的收件者。

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

連接器的物件。

_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