2013-06-07 30 views
5

Tôi đang cố tạo một bản mẫu nút và đang cố gắng tạo một nhiệm vụ để chạy thử nghiệm Jasmine. Tôi có cấu hình sau đây trong Gruntfile.js tôi:Jasmine, Grunt, RequireJS Dừng lại trên đầu ra kiểm tra

jasmine: { 
    src : ['static/test/spec/**/*.js'], 
    options: { 
    host: 'http://localhost:<%= connect.test.port %>/', 
    // specs : 'static/test/spec/**/*.js', 
    template: require('grunt-template-jasmine-requirejs'), 
    templateOptions: { 
     requireConfigFile: 'static/test/SpecRunner.js', 
     requireConfig: { 
     baseUrl: './' 
     } 
    } 
    } 
}, 
connect: { 
    test: { 
    port: 8082 
    } 
} 
.... 
grunt.registerTask('jasmine-test', ['connect', 'jasmine']); 

Khi tôi chạy về công việc, tôi không nhận được bất kỳ lỗi nào, tuy nhiên tôi không nhận được bất kỳ xa hơn thế:

Running "connect:test" (connect) task 
Started connect web server on localhost:8000. 

Running "jasmine:src" (jasmine) task 
Testing jasmine specs via phantom 

Các _SpecRunner Tệp .html được tạo và khi tôi xem tệp trong trình duyệt, tôi không chỉ không thấy bất kỳ lỗi nào nhưng tôi cũng thấy bài kiểm tra hoa nhài của tôi đã chạy đúng cách. Tôi đang thiếu cái gì khiến nhiệm vụ grunt bị treo?

Chúc mừng,

Kianosh

Trả lời

1

tôi đã có thể để có được ví dụ của bạn chỉ làm việc tốt, và những gì bạn có ở đây hoạt động ok. Tôi đã thực hiện một vài sửa đổi nhưng tôi nhận được kết quả tương tự. Những gì bạn đang sử dụng là kết nối, đó là sinh ra một máy chủ web địa phương, sau đó các thử nghiệm chạy trong trình duyệt. Vì vậy, nhiệm vụ của bạn không treo, nó chỉ chạy sever.

Nhưng từ những gì nó có vẻ như, bạn có thể muốn thử nghiệm của bạn để chạy trong thiết bị đầu cuối? Nếu vậy, tôi có một giải pháp khá tốt cho bạn:

package.json

{ 

"name": "Jasmine Tests", 
    "description": "Jasmine Testing", 
    "version": "0.0.1", 
    "devDependencies": { 
    "grunt": "0.4.x", 
    "grunt-contrib-watch": "~0.2.0", 
    "grunt-contrib-jshint": "~0.4.3", 
    "grunt-contrib-jasmine": "~0.4.2", 
    "phantomjs": "1.8.2-0", 
    } 
} 

Gruntfile.js

module.exports = function(grunt) { 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON("package.json"), 
    watch: { 
     grunt: { 
     files: ["Gruntfile.js", "package.json"], 
     tasks: "default" 
     }, 
     javascript: { 
     files: ["src/client/**/*.js", "specs/**/*Spec.js"], 
     tasks: "test" 
     } 
    }, 
    jasmine: { 
     src: "src/client/js/*.js", 
     options: { 
     specs: "specs/client/*Spec.js" 
     } 
    }, 
    jshint: { 
     all: [ 
     "Gruntfile.js", 
     "src/**/*.js", 
     "spec/**/*.js" 
     ], 
     options: { 
     jshintrc: ".jshintrc" 
     } 
    } 
    }); 
    grunt.loadNpmTasks("grunt-contrib-watch"); 
    grunt.loadNpmTasks("grunt-contrib-jshint"); 
    grunt.loadNpmTasks("grunt-contrib-jasmine"); 
    grunt.registerTask("test", ["jshint", "jasmine"]); 
    grunt.registerTask("default", ["test"]); 
}; 

Bạn có thể thay đổi các tập tin stucture để bất cứ điều gì phù hợp với bạn . Thiết lập cả hai file chạy các lệnh sau:

npm install 

grunt test 

hoặc

grunt watch 

Bây giờ tôi đã thêm một vài điều, như jshint, và xem ... đồng hồ là tùy chọn, nhưng nó thực sự tốt đẹp để có. jshint là phải có trong ý kiến ​​của tôi, nhưng cảm thấy tự do để lấy nó ra khỏi giải pháp.

Khóa thực sự là phantomjs, cho phép bạn chạy các thử nghiệm này trong trình duyệt "ma", kết quả đầu ra cho thiết bị đầu cuối.

Bạn cũng sẽ cần tùy chỉnh các thư mục theo sở thích của mình.

Tôi đã đăng một good blog post về điều này (tôi cũng đi kiểm tra phía máy chủ).

EDIT: Bạn cũng cần một tệp .jshintrc nếu bạn chọn sử dụng tuyến đường đó.

.jshintrc

{ 
    "curly" : true, 
    "eqeqeq" : true, 
    "immed" : true, 
    "latedef" : true, 
    "newcap" : true, 
    "noarg" : true, 
    "sub"  : true, 
    "undef" : true, 
    "boss" : true, 
    "eqnull" : true, 
    "node" : true, 
    "es5"  : true, 
    "globals" : { 
    "it"   : false, 
    "xit"  : false, 
    "describe" : false, 
    "xdescribe" : false, 
    "beforeEach" : false, 
    "afterEach" : false, 
    "expect"  : false, 
    "spyOn"  : false 
    } 
} 

Hope this helps.

+0

Cảm ơn !! đã làm việc cho tôi. – Kianosh

Các vấn đề liên quan