2016-06-01 19 views
14

Trong thử nghiệm Chai của tôi, tôi thường thấy mình muốn sử dụng các xác nhận của họ giống như .to.be.empty, .to.be.true v.v ... vì tôi thấy chúng dễ đọc hơn .to.be.length(1) hoặc .to.be.equal(true). Tuy nhiên, điều này phá vỡ linter của tôi (tôi đang sử dụng mặc định Airbnb linting).Cách tốt nhất để loại bỏ lỗi linter không có biểu hiện với chai

Tôi có thể sử dụng cú pháp // disable-eslint-line, nhưng sau đó tôi phải thêm nó vào mỗi dòng đơn đọc như vậy và có vẻ tẻ nhạt.

Tôi cũng đã đọc về thư viện DirtyChai, nhưng điều đó sẽ yêu cầu tôi quay lại toàn bộ thư viện thử nghiệm của tôi thêm dấu ngoặc vuông vào tất cả những thứ mà tôi không cần phải làm đơn giản. một cái gì đó nó có lẽ nên được OK với ở nơi đầu tiên.

Có ai biết cách xử lý tốt hơn cách tôi đã nêu ở trên không?

Trả lời

19

Có một vài giải pháp/phương pháp bạn có thể thực hiện. Bạn chỉ có thể vô hiệu hóa các quy tắc cho toàn bộ tập tin sử dụng eslint-disable ở phía trên cùng của tập tin trong câu hỏi:

/* eslint-disable no-unused-expressions */ 
expect(someTrueValue).to.be.true; 

Tuy nhiên, thêm này ở phía trên cùng của mỗi tập tin thử nghiệm cũng có thể là tẻ nhạt. Một tùy chọn khác là vô hiệu hóa quy tắc này cho tất cả các tệp trong một thư mục cụ thể (điều này cũng cho phép bạn vô hiệu hóa các quy tắc khác thường bị vô hiệu hóa nhưng trở nên phiền hà khi thử nghiệm, chẳng hạn như no-underscore-dangle khi sử dụng rewire).

Bạn có thể làm điều đó bằng cách đặt .eslintcconfiguration file trong cùng thư mục với tệp thử nghiệm của mình, được định cấu hình để tắt quy tắc đó. Điều này cho phép bạn sử dụng cấu hình mặc định cho tất cả các quy tắc khác trong khi bỏ qua quy tắc đó chỉ dành riêng cho các tệp trong thư mục đó. ESLint gọi số này Configuration Cascading.

+0

Đó là một tính năng thực sự mát mẻ (Configuration Cascading) Tôi không biết về eslint cảm ơn!Không phải là giải pháp hoàn hảo cho những gì tôi muốn, vì tôi rất muốn nó chỉ quan tâm đến những trường hợp sử dụng cụ thể đó, nhưng đủ cho những gì tôi đang cố gắng làm. –

5

Tôi đã thực hiện một số nhỏ plugin được gọi là eslint-plugin-chai-friendly ghi đè quy tắc no-unused-expressions mặc định và làm cho nó thân thiện với chai. Quy tắc được sửa đổi bỏ qua các tuyên bố expectshould trong khi vẫn giữ hành vi mặc định cho mọi thứ khác.

+0

+1. Đây phải là câu trả lời được chấp nhận bởi vì nó có nghĩa là bạn không phải tắt quy tắc cho toàn bộ tệp thử nghiệm (vì vậy bạn vẫn nhận được lợi ích của quy tắc khi áp dụng quy tắc này). Cảm ơn các plugin! –

7

Chỉ cần tìm thấy một lựa chọn sử dụng Relative Glob Patterns:

Trong file .eslintrc của bạn:

overrides: [ 
    { 
     files: "*.test.js", 
     rules: { 
      "no-unused-expressions": "off" 
     } 
    } 
] 
0

Trong trường hợp bất cứ ai đang vấp ngã khi ngày hôm nay, tôi đã có cùng một vấn đề và tìm thấy giải pháp này trên eslint documentation. Trong tệp cấu hình eslint của bạn, bạn có thể chỉ định một hoặc nhiều môi trường, sẽ định nghĩa trước các biến toàn cầu cho môi trường này. Đối với chúng tôi, nó muốn được mocha, và bạn muốn cấu hình như thế này trong bạn .eslintrc.json:

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

Kết quả là, nó sẽ loại bỏ tất cả dương tính giả về mocha describe, it, beforeEach vv mà không cần phải hoàn toàn vô hiệu hóa eslint hoặc hoàn toàn vô hiệu hóa bất kỳ quy tắc cụ thể nào.

Thử nghiệm với ESLint v.4.11 và mocha 5,0

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