2017-04-09 66 views
0

我有一个像最后一样的测试文件。我已经尝试了节点文件名,npm文件名,这让我错误。我也尝试了npm测试,它似乎测试了其他东西(附在测试文件后)。我是新角色,看着演示,但我不知道我应该做什么。如何使用角度测试文件?

代码从这里:https://github.com/vega/vega-lite-ui(不是我)

测试文件:

'use strict'; 

/* global vl:true */ 

describe('Directive: bookmarkList', function() { 
    var element, 
    scope; 

    afterEach(inject(function(Modals) { 
    // Remove any modals registered during the tests 
    Modals.empty(); 
    })); 

    beforeEach(module('vlui', function($provide) { 
    // mock vega lite 
    $provide.constant('vl', vl); 
    })); 

    beforeEach(inject(function ($rootScope) { 
    scope = $rootScope.$new(); 
    scope.active = true; 
    })); 

    it('requires a parent modal directive', inject(function ($compile) { 
    // This is a side-effect of the modalCloseButton directive inside bookmarkList 
    element = angular.element('<bookmark-list></bookmark-list>'); 
    expect(function() { 
     $compile(element)(scope); 
    }).to.throw; 
    element = angular.element('<modal><bookmark-list></bookmark-list></modal>'); 
    expect(function() { 
     $compile(element)(scope); 
    }).not.to.throw; 
    })); 

    describe('when opened', function() { 
    beforeEach(inject(function(Modals, $compile) { 
     var template = '<modal id="test-bookmarks"><bookmark-list></bookmark-list></modal>'; 
     element = $compile(angular.element(template))(scope); 
     Modals.open('test-bookmarks'); 
     scope.$digest(); 
    })); 

    // TODO: Tests that validate the directive works properly 
    }); 
}); 

NPM测试结果:

START: 
09 04 2017 01:03:39.411:WARN [watcher]: Pattern "/Users/me/psa/polestar/src/vendor/*.js" does not match any file. 
09 04 2017 01:03:39.522:INFO [karma]: Karma v1.6.0 server started at http://0.0.0.0:9875/ 
09 04 2017 01:03:39.523:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency 
09 04 2017 01:03:39.531:INFO [launcher]: Starting browser PhantomJS 
09 04 2017 01:03:40.644:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket BU46HqpjWzeEkmYvAAAA with id 72055404 
    Service: Spec 
    ✔ should be defined 
    ✔ functions should be defined 
    _removeEmptyFieldDefs 
     empty spec 
     ✔ should be cleaned 
    Directive: configurationEditor 
    ✔ should insert form 
    ✔ should attach config to scope 
    Directive: jsonInput 
    ✔ should make hidden element visible 
    Directive: lyraExport 
    ✔ should make hidden element visible 
    Directive: vgSpecEditor 
    ✔ should show source code 
    Directive: vlSpecEditor 
    ✔ should show source code 

Finished in 0.26 secs/0.066 secs 

SUMMARY: 
✔ 9 tests completed 
[01:03:41] Finished 'test' after 2.17 s 

回答

0

我要去尝试解释发生了什么,当你NPM测试你的项目以及你如何测试一些特定的文件。

当你在你的shell中键入npm test时,对应于这个,package.json文件中有一个脚本。

"scripts": { 
    "postinstall": "bower install", 
    "deploy": "npm run lint && npm run test && scripts/deploy.sh", 
    "watch": "gulp watch", 
    "build": "gulp build", 
    "lint": "gulp jshint", 
    "test": "gulp test" 
}, 

正如你所看到的,有运行在一个npm test命令gulp test

所以,现在我们移动到gulpfile.js

在文件的底部,有一条线

gulp.task('default', ['jshint', 'test', 'build', 'watch']); 

所有这些任务都加入到这里吞掉了,我在你的GitHub repo看到,在它里面一饮而尽目录。

它里面有unit-tests.js文件,里面有这个功能

function runTests (singleRun, done) { 
karma.start({ 
    configFile: __dirname + '/../karma.conf.js', 
    singleRun: singleRun 
    }, function() { done(); }); 
} 

正如你所看到的,它是通过将配置文件和回调的路径出发业。

所以,让我们继续前进karma.conf.js

var testFiles = [ 
    // add bind polyfill since Function.prototype.bind is missing from PhantomJS 
    './node_modules/phantomjs-polyfill/bind-polyfill.js', 
].concat(bowerDeps.js).concat([ 
    src + '/vendor/*.js', 
    src + '/index.js', 
    src + '/**/*.js', 
    tmp + '/partials/templateCacheHtml.js', 
    tmp + '/schema/vl-schema.js' 
]); 

这些文件和DEPS,噶正在测试你(顺便说一句噶是一个测试框架)。您可以添加任何您想要测试的文件及其依赖项。

我还建议你在深入角度单元测试之前先通读一些教程This博客对此非常好。