2016-04-29 19 views
1

Ich möchte module.exports in getesteten js verwenden und es mit require() in das Spezifikationsskript aufnehmen.Verwenden von module.exports in Jasmin-Spezifikationen

cat.js - Datei mit dem Objekt würde Ich mag

var cat = { 
    name: "filemon", 

    meow: function() { 
     return "miau"; 
    }, 
    walk: function() { 
     return "siup siup siup"; 
    } 
} 
module.exports = cat 

catTest.js Export - Spezifikation für Katze

var cat = require('../app/cat') 
describe("Cat test", function() { 
    it("cat should meow with miau", function() { 
     expect(cat.meow()).toBe("miau") 
    }) 
}) 

Wenn ich die Tests mit Jasmin CLI (heruntergeladen mit npm) Tests werden bestanden:

marcins-iMac:untitled marcin$ jasmine 
Started 
.. 

2 specs, 0 failures 
Finished in 0.004 seconds 
Aber

wenn ich versuche, Tests mit Karma Läufer laufen Modul nicht definiert ist:

marcins-iMac:untitled marcin$ karma start 
29 04 2016 23:52:29.238:WARN [karma]: No captured browser, open http://localhost:9876/ 
29 04 2016 23:52:29.248:WARN [karma]: Port 9876 in use 
29 04 2016 23:52:29.248:INFO [karma]: Karma v0.13.22 server started at http://localhost:9877/ 
29 04 2016 23:52:29.252:INFO [launcher]: Starting browser Chrome 
29 04 2016 23:52:30.112:INFO [Chrome 50.0.2661 (Mac OS X 10.11.2)]: Connected on socket /#MJ-R1hm8uQEvSJq9AAAA with id 29613373 
Chrome 50.0.2661 (Mac OS X 10.11.2) ERROR 
    Uncaught ReferenceError: module is not defined 
    at /Users/marcin/WebstormProjects/untitled/app/cat.js:9 

Ein paar Ideen, die ich habe und nicht hilft:

  • require.js Zugabe zu "Dateien" in Karma .config.js
  • Add getestet Objekt Fenster Umfang (es ist hässlich und funktioniert nicht mit CLI)

Wenn das Problem durch c verursacht werden kann, Konfiguration, Projekt auf GitHub: https://github.com/marcinmierzejewski1024/jasmine-karma-playground

Antwort

2

Also das ist, was ich getan habe, um die Testfälle funktionieren zu lassen.

ändern Sie die Dateien Abschnitt in karma.config.js nach unten.

files: [ 
    '/app/cat.js', 
    '/app/dog.js', 
    'spec/catTest.js', 
    'spec/dogTest.js' 
], 

veränderten Rahmenbedingungen Abschnitt in karma.comfig.js auf unter

frameworks: ['jasmine','browserify'], 

geänderten Präprozessor Abschnitt in karma.config.js nach unten.

preprocessors: { 
    'spec/catTest.js': ["coverage",'browserify'], 
    'spec/dogTest.js': ["coverage",'browserify'] 
}, 

Ihre endgültige package.json shuld unten mögen.

{ 
    "name": "untitled", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "jasmine", 
    "dev-mode": "karma start karma.conf.js", 
    "test-report": "TODO:", 
    "test-coverage": "TODO:" 
    }, 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "browserify": "^13.0.0", 
    "jasmine": "^2.4.1", 
    "jasmine-core": "^2.4.1", 
    "karma": "^0.13.22", 
    "karma-browserify": "^5.0.4", 
    "karma-chrome-launcher": "^0.2.3", 
    "karma-jasmine": "^0.3.8", 
    "karma-safari-launcher": "^0.1.1", 
    "require": "^2.4.20", 
    "requirejs": "^2.2.0", 
    "watchify": "^3.7.0" 
    } 
} 

P.S. browserify wird benötigt, um Ihre Testfälle im Browser auszuführen.

Der Dateiabschnitt ist möglicherweise nicht der richtige Weg, um Ihre Dateien zu deklarieren, aber es wird Ihnen den Einstieg ermöglichen und Sie können damit umgehen.