2014-09-29 14 views
29

Tôi đã thiết lập Grunt sử dụng Karma + Jasmine và JSHint. Bất cứ khi nào tôi chạy JSHint trên tập tin spec của tôi, tôi nhận được một loạt các lỗi "không xác định", hầu hết trong số đó là cho các chức năng tích hợp của Jasmine. Ví dụ:JSHint nghĩ rằng chức năng Jasmine không xác định

Running "jshint:test" (jshint) task 

    js/main.spec.js 
     3 |describe("loadMatrix()", function() { 
     ^'describe' is not defined. 
     4 | it("should not assign a value if no arg is passed.", function() { 
      ^'it' is not defined. 

(Tôi cũng nhận được một số lỗi không xác định cho các biến và các hàm từ tập tin JS mà spec của tôi là có nghĩa là để kiểm tra chống lại, nhưng tôi không chắc chắn lý do tại sao đó là và nó có thể là một riêng biệt vấn đề.)

My Karma tập tin cấu hình có frameworks: [ "jasmine" ] trong nó, tôi không có bất kỳ globals thiết cho JSHint, và tôi không có một tập tin .jshintrc kể từ khi tôi đang cấu hình nó trong Grunt. Tôi đã thử thêm các chức năng của Jasmine như các hình cầu JSHint trong Gruntfile của tôi tại một thời điểm, nhưng đặt chúng là true hoặc false không tạo ra sự khác biệt - các lỗi vẫn tồn tại khi JSHint chạy.

Tôi đang thiếu gì? Tôi dường như không thể làm bất cứ điều gì để JSHint bỏ qua việc kiểm tra định nghĩa các chức năng của Jasmine trong tập tin đặc tả của tôi.

+0

Bạn sử dụng phiên bản Karma nào? –

+0

nghiệp 0,12,23, với hoa nhài-hoa nhài 0.2.0. – Ian128K

Trả lời

22

PHÂN LOẠI TỐI THIỂU - phải có "" xung quanh predef trong tệp .jshintrc.

Cố định bằng cách thêm này đến jshint tùy chọn trong Gruntfile.coffee tôi:

predef: [ 
    "jasmine" 
    "describe" 
    "xdescribe" 
    "before" 
    "beforeEach" 
    "after" 
    "afterEach" 
    "it" 
    "xit" 
    "it" 
    "inject" 
    "expect" 
    "spyOn" 
] 

.jshintrc:

"predef": [ 
    "jasmine", 
    "describe", 
    "xdescribe", 
    "before", 
    "beforeEach", 
    "after", 
    "afterEach", 
    "it", 
    "xit", 
    "it", 
    "inject", 
    "expect", 
    "spyOn", 
] 
+1

[câu trả lời từ Leon] (http://stackoverflow.com/a/27136840/3116322) nên là câu trả lời được chấp nhận bởi vì nó ngắn hơn nhiều để xác định chỉ "hoa nhài": true' – Ande

65

Bạn chỉ có thể thêm "jasmine": true đến file .jshintrc của bạn.

+0

https://github.com/ sbt/sbt-jshint/issue/13 –

9

tôi cố định này trong Gruntfile.js thêm jasmine: true với các tùy chọn của nhiệm vụ jshint:

jshint: 
{ 
    options: 
    { 
     ... 
     node: true, 
     jasmine: true, 
     ... 
    }, 
    ... 
}, 

Giống như OP, tôi không sử dụng một tập tin .jshintrc một trong hai.

0

Tôi tin rằng các câu trả lời khác là chính xác, nhưng tôi chưa bao giờ thấy ngoại lệ như vậy trước đây, tuy nhiên tôi thấy nó ngay bây giờ. Sau đó, tôi nhận thấy rằng các xét nghiệm của tôi không có trong IIFE. Vì vậy, tôi đã chuyển chúng trong IIFE như thế này và tôi không còn nhận được cảnh báo JSHINT như vậy nữa.

(function() { 

    describe('foo',() => { 
    it('bar',() => { 
     expect(1+1).toEqual(2); 
    }); 
    }); 

})(); 
Các vấn đề liên quan