我在String a, String b, Map<K,V> vals
申请中使用protractor
mocha
。在尝试使用react
或before()
函数时,它会给我一个错误:
after()
然而,使用ReferenceError: before is not defined
或beforeEach()
可以正常使用。
以下是我配置afterEach()
protractor.conf.js
PS。完整错误:
exports.config = {
capabilities: {
browserName: 'chrome'
},
frameworks: ['mocha', 'chai'],
onPrepare: function() {
browser.ignoreSynchronization = true;
}
};
答案 0 :(得分:5)
我能够通过将framework: jasmine2
添加到protractor.conf.js
来代替before()
和after()
来管理beforeAll()
和afterAll()
。
现在它充当魅力。
有关该问题的详细信息,请参阅gitHub comment @juliemr
编辑:错字
答案 1 :(得分:0)
对于那些想继续使用Mocha的人来说,从
更改量角器配置frameworks: ['mocha', 'chai'],
到
framework: 'mocha',
它帮我修复了错误“ReferenceError:before not defined”
答案 2 :(得分:0)
这个问题可能已经死了,虽然我会在这里为那些想知道的人提供更多信息。接受的答案似乎对原始问题感到困惑,所以我们应该继续前进,让我们回到正轨。
正如@Tomas Dermisek所说,它应该只是使用mocha作为框架。似乎@Max决定使用茉莉而不是mocha,这实际上是摩卡的替代测试规范。这似乎是为什么@Max需要使用jasmines beforeAll()
和afterAll()
而不是mocha所需的before()
和after()
。
将jasmine2
添加到framework
的{{1}}
因为读过这篇文章的人可能已经尝试过茉莉花方法,因为它更容易&#34;然后你可能会使用开箱即用的茉莉花protractor.conf.js
。如果您现在正在考虑实际使用摩卡,那么值得了解一些引起我注意的细微差别。
expect
这样的量角器交互会返回一个承诺。 @cnishina今天向我指出,量角器用角度/ jasminewd包裹茉莉花,这就是为什么茉莉花开箱即用的原因。这意味着在茉莉花中element(by.css('app-root h1')).getText()
将完美地运作。如果您尝试在摩卡中执行等效操作,那么expect(element(by.css('app-root h1')).getText()).toEqual('Car search POC');
之类的内容会失败,而其他许多内容很难让您了解错误TypeError
和其他语法糖果expect
来丰富你的糖果,这样你就不需要在整个测试中做出.eventually
承诺解决方案then()
package.json
以下配置应该让您离开
"devDependencies": {
...
"chai": "~3.5.0",
"chai-as-promised": "~5.3.0",
"protractor": "~5.1.0",
...
}
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
exports.config = {
allScriptsTimeout: 11000, // Timeout of each script
specs: [
'./e2e/**/*.e2e-spec.ts' // pattern for your tests
],
baseUrl: 'http://localhost:4200/', // URL of your SUT
capabilities: {
'browserName': 'chrome' // name of the browser you want to test in
},
directConnect: true, // No need to run selenium server for chrome and firefox
framework: 'mocha', // The framework we want to use instead of say jasmine
mochaOpts: { // Some reasonable mocha config
reporter: "spec",
slow: 3000,
ui: 'bdd',
timeout: 30000
},
beforeLaunch: function() { // If you're using type script then you need compiler options
require('ts-node').register({
project: 'tsconfig.e2e.json'
});
},
onPrepare: function() { // making chai available globally. in your test use `const expect = global['chai'].expect;`
var chai = require('chai');
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
global.chai = chai;
}
};
示例规范文件可能看起来像下面的规范,并将提供此输出
{
"compilerOptions": {
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es2016"
],
"outDir": "../dist/out-tsc-e2e",
"module": "commonjs",
"target": "es6",
"types":[
"mocha",
"chai",
"node"
]
}
}
还值得注意规范中使用的 search page
I do something in a before!
√ will display its title
const expect = global['chai'].expect;
答案 3 :(得分:0)
对于其他遇到相同错误的人,请检查您的ui配置。如果不支持将其设置为tdd before-您的测试将抛出一个异常,提示before未定义。相反,您需要使用suiteSetup。