Javascript Typescript抛出错误属性';至';不存在于类型';匹配器';编译mocha/chai测试文件时
我正在尝试将javascript单元测试移植到typescript,但是,使用内置matcher的简单测试失败:Javascript Typescript抛出错误属性';至';不存在于类型';匹配器';编译mocha/chai测试文件时,javascript,typescript,mocha.js,chai,Javascript,Typescript,Mocha.js,Chai,我正在尝试将javascript单元测试移植到typescript,但是,使用内置matcher的简单测试失败: describe('test getBranches', function() { it('returns an array of branches', function() { branchService.getBranches(owner, name) .then(function(res) {
describe('test getBranches', function() {
it('returns an array of branches', function() {
branchService.getBranches(owner, name)
.then(function(res) {
expect(res).to.exist;//<-- this is where the error is from
})
})
})
我不熟悉打字,但我想我缺少了一些摩卡或柴的打字文件?此后,我安装了打字
,并执行了以下操作:
typings install dt~mocha --save --global
typings install dt~chai --save --global
typings install dt~chai-as-promised --save --global
但这根本没什么区别
注意,生成的js文件很好,测试通过了。我只想知道为什么typescript会出现此错误,以及如何使其消失。理想情况下,通过
@types
将摩卡和柴安装为npm包:
npm安装--save@types/mocha
npm安装--save@types/chai
npm安装——按承诺保存@types/chai
通过这种方式,您可以完全放弃打字
工具,即使包含所有////匹配器
从何而来?我看起来不像是柴的一部分。还有,如何导入expect
?@Martin,错误来自行expect(res)。to,所以我假设expect返回匹配器类型?是的,我想问Matchers
类来自哪里,因为它既不存在于mocha
中,也不存在于chai
中,所以看起来您的导入有问题。@Martin,你说得对,我找到了来自jasmine expect的Matchers,这是否意味着我使用的是jasmine而不是chai?如何让打字脚本选择chai的期望?我没有在我的ts文件中导入任何内容请查看您的打字。d.ts
也许您在那里留下了一些东西。这解决了问题,只是@types/mocha会导致一系列错误,如TS2300重复标识符“descripe”,省略@types/mocha会起作用。此外,我还需要在spec.ts文件中从'chai'导入{expect}。您可能在某处包含了两次d.ts
(它也是由tsc
自动发现的)。我只使用了@types/mocha
,并且运行良好,没有任何警告(同时确保删除typings
目录)我想这是因为我安装了jasmine,它一定带有量角器,但我不知道为什么它安装了类型定义,因为我没有在e2e测试中使用typescript。我已经完全卸载了typings及其目录,但仍然无法使用types@mochabtw,检查您在node_modules/@types
中有什么,以及node_modules
中是否有任何茉莉花剩菜
是的,如果我将其删除并安装@types/mocha,它将再次返回,因为它依赖于量角器,├── @类型/mocha@2.2.32 └─┬ protractor@4.0.10 └── @类型/jasmine@2.5.37
typings install dt~mocha --save --global
typings install dt~chai --save --global
typings install dt~chai-as-promised --save --global