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());
建構函式
Test |
建立新的 TestAdapter 實例。 |
屬性
active |
從 Bot 取得回應佇列。 |
conversation | 取得或設定目前交談的參考。 |
enable |
取得值,指出是否要傳送追蹤活動。 設定是否要傳送追蹤活動的值。 |
locale | 取得或設定交談的地區設定。 |
on |
取得或設定錯誤處理程式,這個處理程式可以攔截中間件或應用程式中的例外狀況。 設定錯誤處理程式,以攔截中間件或應用程式中的例外狀況。 |
template |
|
繼承的屬性
Bot |
|
Connector |
|
OAuth |
方法
繼承的方法
建構函式詳細資料
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
ConnectorClientKey
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
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>
佇列中的下一個活動;如果佇列是空的,則為 或未定義。
getSignInLink(TurnContext, string)
從令牌伺服器取得可傳送為 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>
代表異步作業的承諾
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>
代表異步作業的承諾
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>
代表異步作業的承諾
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
活動傳送至邏輯方法。
如果交談是使用指定的使用者建立的,活動的交談標識碼將會包含新交談的標識碼。
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
更新的配接器物件。
備註
中間件會在初始化時新增至配接器。 每回合,配接器都會依您新增它的順序來呼叫其中間件。