2015-06-27 22 views
5

ile karma-ortakların doğru kullanımı Bunu hata ayıklamaya çalışırken çok fazla zaman harcadım ve düşündüğümü düşündüm. Hatta bir GitHub repository yarattım ama buna güvenmeyeceğim, işte burada. PhantomJS kullanarak Karma test koşucu içinde CommonJS sözdizimi yararlanmaya çalışıyorum. Modülümde ben düşünebildiğim en basit şeyi yarattı: Ne yaparsanız bir jasmine init ben jasmine-npm için komut satırı sayesinde çalıştırabilirsiniz,Yasemin 2

var returnYes = require("../js/returnYes").returnYes; 

describe("returnYes", function() { 

    it("should return Yes", function() { 
    expect(returnYes()).toBe("Yes"); 
    }); 

}); 

Ve:

exports.returnYes = function() { 
    return "Yes"; 
}; 

Yasemin testinde ise basitçe çıkışı ile jasmine yazarak: denemek ve almak için Şimdi

$ jasmine 
Started 
. 


1 spec, 0 failures 
Finished in 0.003 seconds 

o karma içine çalışmak için: benimoluşturmakçerçeveli: jasmine, commonjs. Ve önişlemci olarak commonjs'u ekliyorum.

Ben karma run yapmaya çalışıyorum ve bunu jasmineGlobal = global;

komut satırı çıktı okumak biraz zor beyan jasmine.js içinde getJasmineRequireObj parçası olan bu global bulamıyorum bulmak, ama işte burada :

"devDependencies": { 
    "jasmine-core": "^2.3.4", 
    "karma": "^0.12.37", 
    "karma-commonjs": "0.0.13", 
    "karma-jasmine": "^0.3.5", 
    "karma-phantomjs-launcher": "^0.2.0", 
    "phantomjs": "^1.9.17" 
} 
: iyi ölçmek için

$ karma run 
[2015-06-27 17:41:35.266] [DEBUG] config - Loading config /Users/zen/Projects/karma-commonjs-test/karma.conf.js 
##teamcity[enteredTheMatrix] 
##teamcity[testSuiteStarted nodeId='1' parentNodeId='0' name='karma.conf.js' nodeType='config' locationHint='config:///Users/zen/Projects/karma-commonjs-test/karma.conf.js'] 
##teamcity[testSuiteStarted nodeId='2' parentNodeId='1' name='PhantomJS 1.9.8 (Mac OS X 0.0.0)' nodeType='browser'] 
##teamcity[testStarted nodeId='3' parentNodeId='2' name='Error' nodeType='browserError'] 
##teamcity[testFailed nodeId='3' error='yes' message='ReferenceError: Can|'t find variable: global|nat http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?68f13ab3f93af5a219b9fe8409f8763b31998bba:27'] 
##teamcity[testSuiteFinished nodeId='2'] 
##teamcity[testSuiteFinished nodeId='1'] 

burada packages.json içinde devDependencies vardır

Neden global'u bulamadığımı bilmiyorum. Herhangi bir yardım büyük takdir edilecektir! Benim bütün sorun benim asıl soruya gösterilmeyen karma.conf.js hat (indi gibi :)

cevap

4

Öyle görünüyor: Nedense

preprocessors: { 
    '**/*.js': ['commonjs'] 
}, 

jasmine.js olmaktan mutlu değil, önceden işlenmiş tarafından commonjs, ve "**/*. js", jasmine-core/jasmine.js

'a sahip olan tüm alt dizinleri (büyük olasılıkla overkill olan) içinden geçmeyi söylüyor. spesifik (en iyi uygulama):

preprocessors: { 
    'spec/*.js': ['commonjs'], 
    'js/*.js': ['commonjs'] 
}, 
her şey de çalıştı

preprocessors: { 
    '**/!(jasmine).js': ['commonjs'], 
}, 

Ve:

ancak diğer dosyaları bana bir problem verecekti olmadığını görmek için bir test olarak, denedim. Alt çizgi. Commonjs önişlemcisi ile jasmine.js işlemeyin!