带有 Mocha 的单元测试 Office 加载项
Unit Test Office Add-In with Mocha
我尝试为 outlook 365 加载项编写单元测试。
到目前为止,我已经用 ts-mockito 嘲笑过很多 classes。然而,我面临着一个我目前无法轻易回避的问题。我在执行测试时遇到 ReferenceError: Office is not defined
错误。我追踪到 Office 枚举的使用。
let item: MailItem;
// ...
let messageType = Office.MailboxEnums.ItemNotificationMessageType.ErrorMessage;
console.log('Won`t get here.');
item.AddNotification('Error404', { message: 'Element not found', type: messageType });
我嘲笑了AddNotification
方法,但我不能轻易地嘲笑Enum。我可以创建自己的枚举并编写我的 on AddNotification
方法,该方法会被嘲笑,并在内部将我自己的枚举替换为调用原始 AddNotification
方法的 Office 枚举。但是我不喜欢这种方式。
在使用 --require
的测试中包含 Office.debug.js
也没有用。
我还尝试在测试 class 或 setup.js(mocha 的 --required
)中定义枚举。
export namespace Office {
export module MailboxEnums {
export enum ItemNotificationMessageType {
/**
* The notificationMessage is a progress indicator.
*/
ProgressIndicator,
/**
* The notificationMessage is an informational message.
*/
InformationalMessage,
/**
* The notificationMessage is an error message.
*/
ErrorMessage
}
}
}
我需要将此枚举分配给 global
,以便我可以在任何地方使用它。
export namespace Office {
export module MailboxEnums {
export enum ItemNotificationMessageType {
/**
* The notificationMessage is a progress indicator.
*/
ProgressIndicator,
/**
* The notificationMessage is an informational message.
*/
InformationalMessage,
/**
* The notificationMessage is an error message.
*/
ErrorMessage
}
}
}
// tslint:disable-next-line:no-any
(global as any).Office = Office;
我尝试为 outlook 365 加载项编写单元测试。
到目前为止,我已经用 ts-mockito 嘲笑过很多 classes。然而,我面临着一个我目前无法轻易回避的问题。我在执行测试时遇到 ReferenceError: Office is not defined
错误。我追踪到 Office 枚举的使用。
let item: MailItem;
// ...
let messageType = Office.MailboxEnums.ItemNotificationMessageType.ErrorMessage;
console.log('Won`t get here.');
item.AddNotification('Error404', { message: 'Element not found', type: messageType });
我嘲笑了AddNotification
方法,但我不能轻易地嘲笑Enum。我可以创建自己的枚举并编写我的 on AddNotification
方法,该方法会被嘲笑,并在内部将我自己的枚举替换为调用原始 AddNotification
方法的 Office 枚举。但是我不喜欢这种方式。
在使用 --require
的测试中包含 Office.debug.js
也没有用。
我还尝试在测试 class 或 setup.js(mocha 的 --required
)中定义枚举。
export namespace Office {
export module MailboxEnums {
export enum ItemNotificationMessageType {
/**
* The notificationMessage is a progress indicator.
*/
ProgressIndicator,
/**
* The notificationMessage is an informational message.
*/
InformationalMessage,
/**
* The notificationMessage is an error message.
*/
ErrorMessage
}
}
}
我需要将此枚举分配给 global
,以便我可以在任何地方使用它。
export namespace Office {
export module MailboxEnums {
export enum ItemNotificationMessageType {
/**
* The notificationMessage is a progress indicator.
*/
ProgressIndicator,
/**
* The notificationMessage is an informational message.
*/
InformationalMessage,
/**
* The notificationMessage is an error message.
*/
ErrorMessage
}
}
}
// tslint:disable-next-line:no-any
(global as any).Office = Office;