2015-12-17 14 views
24

Bazı kodları, Jasmine'den Node kullanarak programlı olarak test ediyorum.Çalışan Blanket.js

function runTests() { 
    var Jasmine = require('jasmine'); 
    var jasmine = new Jasmine();  

    jasmine.loadConfig({ 
     spec_dir: 'unit-tests', 
     spec_files: [ 
      'tests-*.js' 
     ] 
    }); 

    var blanket = require('blanket')(); 

    var TerminalReporter = require('jasmine-terminal-reporter'); 
    var reporter = new TerminalReporter({}); 
    jasmine.addReporter(reporter);  

    jasmine.execute(); 
} 

runTests(); 

bu testler çalıştırmak, ben kod kapsamı ayrıntıları almak istiyoruz: Bunu yapmak için, aşağıdaki kurulum ettik. Bunu denerken, ben blanket.js tökezledim. Sorum şu: Kod kapsamı sonuçlarını programlı olarak nasıl programlayabilirim? Yukarıdaki kodu kullanarak bir hata alıyorum. Hata sadece diyor ki:

Error: Bad file instrument indicator. Must be a string, regex, function, or array. 

Neden? Neyi yanlış yapıyorum?

Güncelleme benim package.son dosyasında

, ben şu bölümü var: Böyle görünmek benim runTests fonksiyonunu güncelledik

"config": { 
    "blanket": {  
    "data-cover-flags": { 
     "engineOnly":true 
    } 
    }  
} 

:

function runTests() { 
    var Jasmine = require('jasmine'); 
    var jasmine = new Jasmine();  

    jasmine.loadConfig({ 
     spec_dir: 'unit-tests', 
     spec_files: [ 
      'tests-*.js' 
     ] 
    }); 

    // Setup the coverage reporter 
    var blanket = require("blanket")(); 
    var blanketReporter = function(coverageData) { 
     console.log(coverageData); 
    }; 
    blanket.customReporter = blanketReporter; 

    blanket.instrument({ 
     inputFile: 'library.js' 
    }, function(result) { }); 

    var TerminalReporter = require('jasmine-terminal-reporter'); 
    var reporter = new TerminalReporter({}); 
    jasmine.addReporter(reporter);  

    jasmine.execute(); 
} 

library.js

'use strict'; 

class Processor 
{ 
    execute(vals) { 
     let result = 0; 
     vals.forEach(function(v) { 
     result += v; 
     }); 
     return result; 
    } 
} 
module.exports = Processor; 

Yukarıdaki kod, konsol penceresinden node main.js numaralı telefonu arayarak çalıştırdığım "main.js" adlı bir dosyadadır. "library.js" aynı seviyededir ve testler "./unit-tests/tests.js" adresindeki bir çocuk dizinindedir. Yukarıdaki çalıştığında, customerReporter kodu asla çağrılmaz. Nedenini anlamıyorum.

+0

[yasemin Test atlet kullanma talimatları] (https://github.com/alex-seville/blanket/blob/v1.1.7/docs/intermediate_browser.md). – approxiblue

+0

Hala Node'den çalışan bir battaniye yok. –

+0

'' library.js''' neye benziyor? –

cevap

1

deneyin özel raportör https://github.com/alex-seville/blanket/blob/master/docs/advanced_browser.md#reporters

blanket.customReporter=function(coverage_results){ 
    console.log(coverage_results); 
}; 
+0

Maalesef bu yaklaşım benim için çalışmadı. Kodumu sorgumda 'TerminalReporter' satırının üstüne ekledim. Bu yüzden, şu blok eklenmiştir: '// Kapsam muhabirini ayarlama var blanket = require ('battaniye')(); blanket.customReporter = işlev (cover_results) { console.log (cover_results); }; ' Şimdi bir hata oluştu:' Hata: Hatalı dosya enstrüman göstergesi. Dize, regex, işlev veya dizi olmalı. 'Neyi yanlış yapıyorum? CustomReporter bir işlevdir. –

7

https://github.com/alex-seville/blanket/issues/248

Eğer package.json aşağıda belirtmezseniz, battaniye, bir "Hatalı dosya enstrüman göstergesini atar bir dize regex, fonksiyon olmalı. veya dizi. " hata. Gereksinim duyduğunuz anda ('battaniye'); düğüm içindeki herhangi bir yerden.

"scripts": { 
    "blanket": { 
     "data-cover-flags": { 
     "engineOnly":true 
     } 
    } 
    } 
+0

Yani, bunu yaptığımda bile kod kapsamını göremiyorum.Ekledim var battaniye = gerekli ("battaniye") ({"desen": "/ birim-testleri /"}); blanket.instrument ({}, işlev (sonuç) { console.log (sonuç); }); ”Bununla birlikte, şunu belirten bir hata görüyorum: 'TypeError: Özellik undefined' yerine 'okunamıyor'. Kafam çok karışık. –

+0

Sadece battaniye kullandım (ayrıca mocha birim testleri ile). Ben yapılandırma dosyaları (sadece inanıyorum package.json dosyası) sadece zor olduğunu hatırlıyorum. Battaniye sayfasından, ihtiyaç duyulduğunu gösterir ("battaniye") ({/ * isteğe bağlı seçenekler * /}); – Tim

+0

Bilgisayarım olmadan şu ana kadar seyahat ettiğim için özür dilerim - zaten bildiğini biliyorum ama burada battaniye sayfası: http://blanketjs.org – Tim