Sto cercando di utilizzare Goniometro, CucumberJS e Jasmine per testare il mio progetto. Come uso sia il gelsomino che il cetriolo con il goniometro? Ecco la messa a punto del progetto che ho creato:Come utilizzare Jasmine e CucumberJS con il goniometro
/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'
}
};
Come si può vedere, questo progetto utilizza "cetriolo", come il quadro. Come aggiungo il framework Jasmine a CucumberJS? Lo farebbe attraverso il file di configurazione del goniometro o qualche altro nel codice?
/path/to/myproj/caratteristiche/demo.feature
Feature: Some terse yet descriptive text of what is desired
Scenario: Some determinable business situation
Given some precondition
/path/to/myproj/caratteristiche/stepDefinitions.js
module.exports = function() {
this.Given(/^some precondition$/, function (callback) {
expect(true).toEqual(true);
callback();
});
};
Quando questo viene eseguito "Aspettarsi" non è definito, presumibilmente perché Jasmine non è stato integrato, e si aspetta che sia globale insieme ad esso. Ecco il messaggio di errore completo:
$ $(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"
}
}
Nota: sto usando una particolare commit al repository Git goniometro nel mio pacchetto. json, perché l'ultima versione (2.1.0) ha a bug, che impedisce l'integrazione con CucumberJS.
Mocha è un framework di testing, che consente l'utilizzo di qualsiasi modulo aspettativa, compreso Chai. Questo è uno dei motivi per cui Mocha è popolare come framework di testing unitario, in modo che lo stesso modulo di aspettative utilizzato per scrivere i test di Cucumber possa essere utilizzato anche per scrivere test di unità, creando un codice più coerente basato sul codice di test?Grazie per la risposta e per la raccomandazione CukeFarm! –
@AristarkhArtemiy sì, questo è un ottimo motivo per andare per Mocha. Usare gli stessi pattern/sintassi (con chai per esempio) nei test di unità e nelle definizioni di passi di Cucumber è una buona cosa, specialmente se altre persone devono saltare nella base di codice. – jbpros
puoi approfondire i motivi per cui CucumberJS e Jasmine si escludono a vicenda? Sto cercando di integrare CucumberJs nel goniometro per eseguire i test E2E. Se potessi fare quel lavoro sarebbe bello. Stack Sto usando: Angular2, webpack, .. –