জাভাস্ক্রিপ্ট স্ট্যান্ডার্ড স্টাইল মোচাকে স্বীকৃতি দেয় না


91

আমার কাছে একটি মোচা টেস্ট ফাইল রয়েছে যা দেখতে এটির মতো দেখাচ্ছে:

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)
    })
  })
})

আমি যখন mochaসিএলআই থেকে রান করি তখন এটি সফলভাবে পরীক্ষা চালায়।

আমি যখন চালাচ্ছি standard( জাভাস্ক্রিপ্ট স্ট্যান্ডার্ড স্টাইলের জন্য কার্যকর ) আমি মোচার কাঠামোর ফাংশনগুলিতে ত্রুটিগুলি পাই:

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.

এই কার্যগুলি সম্পর্কে স্ট্যান্ডার্ডকে অভিযোগ না করার সর্বোত্তম উপায় কী?

উত্তর:


144

আসলে, আপনাকে আপনার প্যাকেজ.জসনে প্রতিটি একক গ্লোবাল ভেরিয়েবল তালিকাবদ্ধ করার দরকার নেই

আপনি এর পরিবর্তে পরিবেশগুলি নির্দিষ্ট করতে পারেন:

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

উত্স: অফিসিয়াল ইএসলিন্ট কনফিগারেশন ডক্স


4
ভাল সমাধান। তার মানে কি এই নয় যে আমি itনিয়মিত নন-টেস্ট কোডটিতে কল করতে পারি এবং এটি লিটিংটি পাস করবে? অন্য কথায়। এটি কি কেবল পরীক্ষার ক্লাসে সীমাবদ্ধ করা যায়?
অ্যাশলে

4
হ্যাঁ, এটাই সমস্যা ... package.jsonলিন্টারের জন্য সেটিংস হ'ল 'গ্লোবাল'। আপনি বিভিন্ন ফাইলের জন্য বিভিন্ন সিআইএল আর্গুমেন্ট সরবরাহ করে এটিকে বাইপাস করতে পারেন: standard --env mocha test/**/jsলিন্ট-টেস্টের জন্য কিছু (পরীক্ষিত নয়), তবে আইআরএল এর মতো সেটিংগুলিকে টুইঙ্ক করার দরকার ছিল না আমার।
Krzysztof Kaczor

4
ঠাট্টা ব্যবহার করে, আপনি এটিও করতে পারেন: "স্ট্যান্ডার্ড": {"এনভিভি": ["ঠাট্টা"]}
পলাফক্স_

@ প্যালাফক্স_এর মন্তব্যে যোগ করতে আপনি নেভিগেট করে কোন মানগুলি উপলব্ধ তা জানতে পারবেন: github.com/sindresorhus/globals/blob/master/globals.json
ডিওন স্যামুয়েল ওয়াশিংটন

আমি ব্যবহার করছি jestতবে আমি জানি না কেন কেবল মোচা কাজ করে এবং তামাশা নয়!
ডেভেলপারিয়াম

147

আমি আমার সম্পাদনা করতে .eslintrcএবং env বিভাগে মোচা যুক্ত করতে পছন্দ করি :

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

এইভাবে আমার package.jsonফাইলটি পরিষ্কার রাখা হয়েছে, এছাড়াও এসসিলিন্টের জন্য ভিএসকোড প্লাগইন এটি আরও ভাল বোঝে


6
হ্যাঁ, এটি অনুমোদিত উত্তর হওয়া উচিত।
রেমন্ড ওয়াচাগা

4
আমি এই দ্বিতীয়টিও অনুমোদিত যে এটি অনুমোদিত উত্তর হওয়া উচিত।
এজর্ন কেম্বোই

61

যখন এসলিন্টের মন্তব্য কনফিগারেশনটি একটি একক ফাইলের জন্য দুর্দান্ত কাজ করে, আমি আমার প্রকল্পগুলির জন্য এটি করার জন্য স্ট্যান্ডার্ডের কনফিগারেশনটি ব্যবহার করতে পছন্দ করি । যেমনpackage.json globals

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

50

eslint জন্য শুরুতে এই লাইন ব্যবহার test_file.js

/* eslint-env mocha */

4
আমি এই সমাধান পছন্দ!
মাইকেল ওজেরিয়ানস্কি

6
আপনার যদি প্রতিটি পরীক্ষার ফাইলের জন্য এটি যুক্ত করতে হয় তবে এটি কোনও সমাধান নয়
পেয়াদার

38

আপনি ওয়েব কর্মীদের জন্য একই সমাধান ব্যবহার করতে পারেন

/* 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

নিক টমলিন দ্বারা চিহ্নিত হিসাবে আপনি কেবল গ্লোবাল ঘোষণা করতে হবে।

প্রকল্পের উত্স বা প্রকল্পের বিভিন্ন অংশ হিসাবে পরীক্ষার জন্য আমার কাছে বিভিন্ন গ্লোবাল রয়েছে বলে আমি এটি কমান্ড লাইনে রেখে দিয়েছি।

পরীক্ষার জন্য আমাদের ব্যবহার করা উচিত

standard --global describe --global it test/

আমার প্রকল্পে অন্য কোথাও আমি কোড ব্যবহার করতে চাই যা jQuery ব্যবহার করে তাই আমি ব্যবহার করি

standard --global $ src/client/

বোনাস টিপ

আপনি Syntastic সঙ্গে তেজ ব্যবহার করলে ট্যাক্স হয়তো আপনার যোগ করতে চান .vimrc

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.