TestAdapter class
用于单元测试的测试适配器。 此适配器可用于模拟将消息从用户发送到机器人。
- 扩展
注解
以下示例设置测试适配器,然后执行一个简单的测试:
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 |
获取机器人的响应队列。 |
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
正在测试的机器人逻辑。
- template
-
Partial<Activity>
(可选)活动,包含要分配给接收的所有测试消息的默认值。
- sendTraceActivity
-
boolean
指示适配器是否应将其队列添加到机器人生成的任何跟踪活动。
属性详细信息
activeQueue
获取机器人的响应队列。
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>
表示异步操作的 promise。
注解
使用以下参数调用错误处理程序:
名字 | 类型 | 描述 |
---|---|---|
context |
TurnContext | 轮次的上下文对象。 |
error |
Error |
引发 Node.js 错误。 |
template
Activity
模板,该模板将与发送到受测逻辑的所有活动合并。
template: Partial<Activity>
属性值
Partial<Activity>
继承属性详细信息
BotIdentityKey
ConnectorClientKey
ConnectorClientKey: symbol
属性值
symbol
继承自
OAuthScopeKey
方法详细信息
addExchangeableToken(string, string, string, string, string)
添加一个虚假的可交换令牌,以便稍后可以交换它。
function addExchangeableToken(connectionName: string, channelId: string, userId: string, exchangeableItem: string, token: string)
参数
- connectionName
-
string
要使用的身份验证连接的名称。
- channelId
-
string
通道 ID。
- userId
-
string
用户 ID。
- 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
通道 ID。
- userId
-
string
用户 ID。
- 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>
表示异步操作的 promise。
createConversation(string, string, string)
创建 ConversationReference。
static function createConversation(name: string, user?: string, bot?: string): ConversationReference
参数
- name
-
string
对话的名称(也 ID)。
- user
-
string
用户名称(也 ID)默认值:User1。
- bot
-
string
机器人的名称(也 ID)默认值:机器人。
返回
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
与令牌关联的用户 ID。
- tokenExchangeRequest
-
TokenExchangeRequest
交换请求详细信息,可以是要交换的令牌,要么是交换的 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 返回下一个机器人响应。
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
用户 ID
- _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
要为其检索令牌状态的用户的 ID。
- 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>
要调用的机器人逻辑。
返回
Promise<any>
表示异步操作的 promise。
send(string | Partial<Activity>)
向机器人发送内容。 这会返回一个新的 TestFlow
实例,该实例可用于添加用于检查机器人回复,然后发送其他活动的其他步骤。
function send(userSays: string | Partial<Activity>): TestFlow
参数
- userSays
-
string | Partial<Activity>
模拟用户输入的文本或活动。
返回
新的 TestFlow 实例,可用于添加用于检查机器人答复,然后发送其他活动的其他步骤。
注解
此示例演示如何发送消息,然后验证响应是否按预期方式:
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>
要调用的机器人逻辑。
返回
Promise<any>
表示异步操作的 promise。
signOutUser(TurnContext, string, string)
使用令牌服务器注销用户。
function signOutUser(context: TurnContext, connectionName?: string, userId?: string): Promise<void>
参数
- context
- TurnContext
与用户的当前会话轮次的上下文。
- connectionName
-
string
要使用的身份验证连接的名称。
- userId
-
string
要注销的用户 ID。
返回
Promise<void>
test(string | Partial<Activity>, string | Partial<Activity> | (activity: Partial<Activity>, description?: string) => void, string, number)
向机器人发送某些内容,并期望机器人使用给定的答复返回。
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
机器人发送的答复的预期文本或活动。
- description
-
string
(可选)测试用例的说明。 如果未提供,将生成一个。
- _timeout
-
number
(可选)等待机器人响应的毫秒数。 默认值为 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
(可选)等待机器人响应的毫秒数。 默认值为 3000
。
返回
一个新的 TestFlow 对象,该对象将此交换追加到建模的交换中。
注解
具有“机器人”角色的每个活动都将使用 assertReply()进行处理,所有其他活动都将作为发送的用户消息进行处理。
throwOnExchangeRequest(string, string, string, string)
添加一个指令,用于在交换请求期间引发异常。
function throwOnExchangeRequest(connectionName: string, channelId: string, userId: string, exchangeableItem: string)
参数
- connectionName
-
string
连接名称。
- channelId
-
string
通道 ID。
- userId
-
string
用户 ID。
- 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>
对话 部分
- logic
-
(context: TurnContext) => Promise<void>
在适配器中间件运行后调用的异步方法。
返回
Promise<void>
表示异步操作的 promise
继承自
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>
对话 部分
- audience
-
string
表示主动消息收件人的值。
- logic
-
(context: TurnContext) => Promise<void>
在适配器中间件运行后调用的异步方法。
返回
Promise<void>
表示异步操作的 promise
继承自
continueConversationAsync(string, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)
异步恢复与用户的对话,可能经过一段时间之后。
function continueConversationAsync(botAppId: string, reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>
参数
- botAppId
-
string
机器人的应用程序 ID。 在适配器(控制台、测试等)的单租户中忽略此参数,但对于多租户感知的 BotFrameworkAdapter 至关重要。
- reference
-
Partial<ConversationReference>
对话 部分
- logic
-
(context: TurnContext) => Promise<void>
在适配器中间件运行后调用的异步方法。
返回
Promise<void>
表示异步操作的 promise
继承自
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
机器人的应用程序 ID。
- _channelId
-
string
通道的 ID。
- _serviceUrl
-
string
通道的 ID。
- _audience
-
string
连接器的受众。
- _conversationParameters
-
ConversationParameters
用于创建对话的对话信息
- _logic
-
(context: TurnContext) => Promise<void>
调用生成的机器人轮次的方法。
返回
Promise<void>
表示异步操作的承诺
注解
若要开始对话,机器人必须知道其帐户信息和该通道上的用户帐户信息。 大多数_channels仅支持启动直接消息(非组)对话。
适配器尝试在通道上创建新会话,然后通过其中间件管道向逻辑方法发送 conversationUpdate
活动。
如果与指定用户建立对话,活动的会话 ID 将包含新会话的 ID。
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
更新的适配器对象。
注解
中间件在初始化时添加到适配器。 每个轮次,适配器都会按照添加中间件的顺序调用其中间件。