Kiểu chuẩn JavaScript không nhận ra Mocha


91

Tôi có một tệp kiểm tra Mocha trông giống như sau:

var expect = require('chai').expect
var muting = require('../muting')

describe('muting', function () {
  describe('init()', function () {
    it('should inject an object into twitter', function () {
      var twitter = 'twitter'
      muting.init(twitter)
      expect(muting.twitter).to.equal(twitter)
    })
  })
})

Khi tôi chạy mochatừ CLI, nó chạy thử nghiệm thành công.

Khi tôi chạy standard(tệp thực thi cho Kiểu chuẩn JavaScript ), tôi gặp lỗi trên các hàm khung của Mocha như sau:

standard: Use JavaScript Standard Style (https://github.com/feross/standard)   
c:\..\test\index.js:5:0: 'describe' is not defined.  
c:\..\test\index.js:6:2: 'describe' is not defined.  
c:\..\test\index.js:7:4: 'it' is not defined.

Cách sạch nhất để khiến Standard không phàn nàn về các chức năng này là gì?

Câu trả lời:


144

Trên thực tế, bạn không cần phải liệt kê mọi biến toàn cục trong package.json của mình

Thay vào đó, bạn có thể chỉ định các môi trường như thế này:

"standard": {
  "env": [ "mocha" ]
}

Nguồn: Tài liệu cấu hình ESLint chính thức .


1
Giải pháp tốt. Điều đó không có nghĩa là tôi có thể gọi itbằng mã không phải kiểm tra thông thường và nó sẽ vượt qua linting? Nói cách khác. Nó có thể bị hạn chế chỉ cho các lớp thử nghiệm?
Ashley

3
Vâng, đó là vấn đề ... package.jsoncài đặt là 'toàn cầu' cho linter. Bạn có thể bỏ qua nó bằng cách cung cấp các đối số CLI khác nhau cho các tệp khác nhau: tương tự như standard --env mocha test/**/jsđối với các bài kiểm tra lint (không được kiểm tra), nhưng IRL tôi chưa bao giờ cần phải điều chỉnh cài đặt như thế này.
Krzysztof Kaczor

4
Nếu sử dụng jest, bạn cũng có thể: "standard": {"env": ["jest"]}
palafox_e

Để thêm vào những nhận xét của @palafox_e bạn có thể tìm hiểu các giá trị có sẵn bằng cách điều hướng đến: github.com/sindresorhus/globals/blob/master/globals.json
Deyon Samuel Washington

Tôi đang sử dụng jestnhưng tôi không biết tại sao chỉ hoạt động cho mocha chứ không phải jest!
Developerium

149

Tôi muốn chỉnh sửa của mình .eslintrcvà thêm mocha vào phần env:

...
"env": {
  "commonjs": true,
  "node": true,
  "mocha": true
},
...

bằng cách này package.jsontệp của tôi được giữ sạch sẽ, cũng như plugin vscode cho eslint hiểu nó tốt hơn


6
Có, đây phải là câu trả lời được chấp thuận.
Raymond Wachaga

4
Tôi cũng thứ hai thực tế rằng đây phải là câu trả lời được chấp thuận.
Ezrqn Kemboi

61

trong khi cấu hình bình luận của eslint hoạt động tốt cho một tệp duy nhất, tôi thích sử dụng cấu hình của tiêu chuẩn để thực hiện việc này cho các dự án của mình. Ví dụpackage.json globals

{
  "name": "my-package",
  "version": "1.0.0",
  "standard": {
    "globals": [
      "describe",
      "context",
      "before",
      "beforeEach",
      "after",
      "afterEach",
      "it",
      "expect"
    ]
  }
}

50

cho eslint sử dụng dòng này ở đầu test_file.js

/* eslint-env mocha */

1
Tôi thích giải pháp này hơn!
Michael Ozeryansky

6
Đó không phải là một giải pháp nếu bạn cần phải thêm nó cho mỗi tập tin thử nghiệm
Peadar

38

Bạn có thể sử dụng giải pháp tương tự như cho nhân viên web

/* global describe it */
var expect = require('chai').expect
var muting = require('../muting')

describe('muting', function () {
  describe('init()', function () {
    it('should inject an object into twitter', function () {
     var twitter = 'twitter'
     muting.init(twitter)
     expect(muting.twitter).to.equal(twitter)
    })
  })
})

2

Như đã chỉ ra bởi Nick Tomlin, bạn chỉ cần khai báo các hình cầu.

Tôi sử dụng để đặt nó trong dòng lệnh, vì tôi có các hình cầu khác nhau cho các bài kiểm tra như cho các nguồn hoặc các phần khác nhau của dự án.

Đối với các bài kiểm tra, chúng ta nên sử dụng

standard --global describe --global it test/

ở nơi khác trong dự án của mình, tôi muốn viết mã lint sử dụng jQuery nên tôi sử dụng

standard --global $ src/client/

Tiền thưởng

Nếu bạn đang sử dụng vim với Syntastic, bạn có thể muốn thêm vào .vimrc của mình

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.