Ich suche Winkelmesser, CucumberJS und Jasmine für das Testen meines Projektes. Wie benutze ich Jasmine und CucumberJS mit Protractor? Hier ist das Projekt-Setup die ich angelegt habe:Wie man Jasmine und CucumberJS mit Winkelmesser benutzt
/path/to/myproj/protractor.conf.js
exports.config = {
seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar',
specs: [
'features/*.feature'
],
baseUrl: 'http://localhost:8080',
multiCapabilities: [
{
'browserName': 'chrome'
}
],
allScriptsTimeout: 380000,
getPageTimeout: 20000,
framework: 'cucumber',
cucumberOpts: {
require: 'features/stepDefinitions.js',
format: 'summary'
}
};
Wie Sie sehen können, dieses Projekt verwendet "Gurke" als Rahmen. Wie füge ich das Jasmine-Framework neben CucumberJS hinzu? Würde dies durch die Winkelmesser-Konfigurationsdatei oder irgendwo anders im Code geschehen?
/path/to/myproj/Funktionen/demo.feature
Feature: Some terse yet descriptive text of what is desired
Scenario: Some determinable business situation
Given some precondition
/path/to/myproj/Funktionen/stepDefinitions.js
module.exports = function() {
this.Given(/^some precondition$/, function (callback) {
expect(true).toEqual(true);
callback();
});
};
Wenn dies ausgeführt wird "Expect" ist nicht definiert, vermutlich weil Jasmine nicht integriert wurde und es global erwartet wird. Hier ist die vollständige Fehlermeldung:
$ $(npm bin)/protractor protractor.conf.js
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://192.168.1.115:59957/wd/hub
(::) failed steps (::)
ReferenceError: expect is not defined
at World.<anonymous> (/path/to/myproj/features/stepDefinitions.js:3:5)
at process._tickCallback (node.js:355:11)
Failing scenarios:
/path/to/myproj/features/demo.feature:3 # Scenario: Some determinable business situation
1 scenario (1 failed)
1 step (1 failed)
Shutting down selenium standalone server.
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 failed 1 test(s)
[launcher] overall: 1 failed spec(s)
[launcher] Process exited with error code 1
/path/to/myproj/package.json
{
"name": "myproj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"cucumber": "0.4.9",
"protractor": "git+https://github.com/angular/protractor.git#0262268fa43b9eefac815d986740efa07bb15818"
}
}
Hinweis: Ich verwende eine insbesondere auf den Protractor Git-Repository in meinem Paket zu begehen. json, weil die neueste Version (2.1.0) a bug hat, die die Integration mit CucumberJS verhindert.
Mokka ein Test-Framework, die für die Verwendung eines Erwartungs Modul ermöglicht, einschließlich Chai. Ist das einer der Gründe, warum Mocha als Einheitentestframework populär ist, so dass das gleiche Erwartungsmodul, das für das Schreiben von Gurkentests verwendet wird, auch für Komponententests verwendet werden kann, was für einen konsistenteren Code im Testcode sorgt?Danke für deine Antwort und für die CukeFarm Empfehlung! –
@AristarkhArtemiy yep, das ist ein sehr guter Grund für Mocha. Es ist eine gute Sache, die gleichen Muster/Syntax (mit Chai zum Beispiel) in deinen Unit-Tests und Cucumber-Step-Definitionen zu verwenden, besonders wenn andere Leute in die Codebasis springen müssen. – jbpros
Können Sie die Gründe erklären, warum sich CucumberJS und Jasmine gegenseitig ausschließen? Ich versuche, CucumberJs in Winkelmesser zu integrieren, um E2E-Tests auszuführen. Wenn ich das trainieren könnte, wäre das so schön. Stack verwende ich: Angular2, Webpack, .. –