不能分配给&#39;预期<promise <string>&gt;&#39;在编辑器中

时间:2017-06-15 16:16:34

标签: typescript jasmine protractor

我的测试是从命令行传递的,但是我使用typescript编辑了Atom来源。

当我在编辑器中打开其中一个测试文件时,我发现此行有错误:

expect(pageObject.name.getText()).toEqual('Some name');

这是错误:

Typescript

Error
Argument of type '"Some name"' is not assignable to parameter of type 'Expected<Promise<string>>'.at line 16 col 50

为什么这会在我的编辑器中显示?然而测试通过了。

运行量角器测试的命令:

protractor dist/protractor.config.js

来自package.json

的代码段
"dependencies": {
    "typescript": "2.3.3"
},
"devDependencies": {
    "@types/jasmine": "2.5.45",
    "@types/node": "^7.0.13",
    "jasmine-core": "^2.6.0",
    "jasmine-spec-reporter": "^4.1.0",
    "protractor": "^5.1.2"
}

tsconfig.fvt.test.json

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "noUnusedLocals": true,
    "moduleResolution": "node",
    "sourceMap": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noUnusedParameters": true,
    "outDir": "dist",
    "skipLibCheck": true,
    "target": "ES5",
    "lib": [
      "dom", "es5", "es6", "scripthost"
    ],
    "types": ["jasmine"]
  },
  "include": [
    "protractor.config.ts",
    "test/e2e/**/*.ts"
  ]
}

3 个答案:

答案 0 :(得分:2)

getText()返回承诺。请参阅doc

如果要从元素断言文本,则需要chai-as-promise。 请参阅example

答案 1 :(得分:1)

目前,您可以尝试

npm i "@types/jasminewd2" -D

并在您的 tsconfig.json jasminewd2

中添加 compilerOptions.types

我用量角器遇到了这个问题。这是打字错误。这是issue link

答案 2 :(得分:0)

因为它是一个 async 方法只需更改

来自expect(pageObject.name.getText()).toEqual('Some name');

expect(await pageObject.name.getText()).toEqual('Some name');