typescript 如何编写Sharepoint Webparts的测试?

puruo6ea  于 2023-06-24  发布在  TypeScript
关注(0)|答案(2)|浏览(108)

如何在Sharepoint web部件中对CRUD方法进行单元测试?我尝试遵循Jest文档中关于创建类/特定方法的Mock,但我认为这是不可能的,因为我应该测试的服务类,需要一个特定的上下文作为构造函数。

export default class PnpServices implements IPnpServices {
private _sp;
constructor(context: WebPartContext) {
    this._sp = getSP(context);
}

public async sp_createItem(listName: string, itemObject: any): Promise<any> {
    try {
        const iar: IItemAddResult = await this
        ._sp.web.lists.getByTitle(listName).items.add(itemObject)
        return iar.data.Id;
    } catch (e) {
        throw new Error("error")
    }
}

我试着设置一个简单的测试来检查构造函数是否可以在将“null”解析为参数而不是上下文时被调用

jest.mock('./pnpservices')
it('should pass', () => {
    const mockedClassInstance = new PnpServices(null);
    expect(PnpServices).toBeCalledTimes(1);
})

我能找到的大多数例子都没有创建真正有用的测试,甚至没有面向业务的方法,如CRUD,它们大多只是简单的“加法”方法,或者它们唯一的功能是返回console.log。
有什么帮助吗?

8yparm6h

8yparm6h1#

使用SPFx Web部件并不容易。首先,jest本身并不是开箱即用的,你有很多东西要安装和配置。我关注了这篇文章,它或多或少在几年前工作:
https://www.eliostruyf.com/sharepoint-framework-unit-tests-with-jest/
由于你似乎也在同一个项目中使用pnpjs,你可能想看看这个:
https://github.com/pnp/pnpjs/issues/1425

k4emjkb1

k4emjkb12#

我在博客上写了一段时间。你可以找到文章here。有一个完整设置的示例链接。
长话短说-- SPFx还不能在jest运行时运行,所以你必须使用jest.mock来模拟大多数的spfx库,以防止从node_modules加载它。

相关问题