TestAdapter class

用于单元测试的测试适配器。 此适配器可用于模拟将消息从用户发送到机器人。

扩展

注解

以下示例设置测试适配器,然后执行一个简单的测试:

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

获取机器人的响应队列。

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 返回下一个机器人响应。

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

向机器人发送内容。 这会返回一个新的 TestFlow 实例,该实例可用于添加用于检查机器人回复,然后发送其他活动的其他步骤。

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)

向机器人发送某些内容,并期望机器人使用给定的答复返回。

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

正在测试的机器人逻辑。

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

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

通道 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

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>

队列中的下一个活动;或未定义,如果队列为空。

从令牌服务器获取一个登录链接,该链接可以作为 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

继承自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>

对话 部分 对话继续。

audience

string

表示主动消息收件人的值。

logic

(context: TurnContext) => Promise<void>

在适配器中间件运行后调用的异步方法。

返回

Promise<void>

表示异步操作的 promise

继承自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

机器人的应用程序 ID。 在适配器(控制台、测试等)的单租户中忽略此参数,但对于多租户感知的 BotFrameworkAdapter 至关重要。

reference

Partial<ConversationReference>

对话 部分 对话继续。

logic

(context: TurnContext) => Promise<void>

在适配器中间件运行后调用的异步方法。

返回

Promise<void>

表示异步操作的 promise

继承自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

机器人的应用程序 ID。

_channelId

string

通道的 ID。

_serviceUrl

string

通道的 ID。

_audience

string

连接器的受众。

_conversationParameters

ConversationParameters

用于创建对话的对话信息

_logic

(context: TurnContext) => Promise<void>

调用生成的机器人轮次的方法。

返回

Promise<void>

表示异步操作的承诺

注解

若要开始对话,机器人必须知道其帐户信息和该通道上的用户帐户信息。 大多数_channels仅支持启动直接消息(非组)对话。

适配器尝试在通道上创建新会话,然后通过其中间件管道向逻辑方法发送 conversationUpdate 活动。

如果与指定用户建立对话,活动的会话 ID 将包含新会话的 ID。

继承自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