带有 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;