gpt4 book ai didi

angular - 无法使用 typescript 和 Angular 为 Jasmine 添加自定义匹配器

转载 作者:行者123 更新时间:2023-11-28 21:36:07 24 4
gpt4 key购买 nike

我正在尝试向 jasmine 添加多个新的自定义匹配器并使用它,目标是创建一个注册 2 个匹配器的文件,并且所有匹配器必须可用于每个测试文件,只需一次注册。

所以我有一个名为 custom-matchers.ts 的文件

/// <reference path="custom-matchers.d.ts"/>

(() => {
beforeEach(() => {
jasmine.addMatchers({
toHaveText: () => {
return {
compare: (actual, expected) => {
return {
pass: actual.getText().then(pass => pass === expected)
};
},
};
},
toBePresent: () => {
return {
compare: (actual, expected) => {
return {
pass: actual.isPresent().then(pass => pass === expected),
};
},
};
}
});
});
})();

名为 custom-matchers.d.ts 的类型定义文件(我尝试使用与引用文件不同的名称,但它是相同的):

declare namespace jasmine {
interface Matchers<T> {
toHaveText(text: any): boolean;
toBePresent(text: any): boolean;
}
}

这个文件注册在另一个名为e2e-helper的文件中,这个文件在每个测试文件e2e-helper.ts中导入:

/// <reference path="custom-matchers.d.ts"/>
import './custom-matchers';

例如,当我尝试在测试文件中使用它时:

expect(object as any).toBePresent();

我遇到了一个错误:

Property 'toBePresent' does not exist on type 'Matchers'

最佳答案

我找到了一个解决方案,我只是将我的定义文件导入到 custom-matchers.ts 文件下面的帮助文件中,并将其重命名为具有不同的名称导入,所以我有:

import './custom-matchers';
import './custom-matchers-types'; // definition file

关于angular - 无法使用 typescript 和 Angular 为 Jasmine 添加自定义匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com