আপনি একাধিক মডিউল অন্তর্ভুক্ত করতে চাইলে মধ্যে আপনার describe
অনুক্রমের যে আপনি আপনার প্রশ্নে করছ, কি করছ প্রায় কাছাকাছি হয় এটা যদি না আপনি একজাতীয় উৎকৃষ্ট কফি জন্য একটি কাস্টম পরীক্ষা লোডার লিখতে চান। কাস্টম লোডারটি লেখা আপনার পক্ষে ইতিমধ্যে যা আছে তার চেয়ে আপনার কোডটি আরও পরিষ্কার করা বা আপনার কোডটি পরিষ্কার করা সহজ হবে না।
আমি কীভাবে কয়েকটি জিনিস পরিবর্তন করব তার উদাহরণ এখানে। test
এই উদাহরণে সাব সংগঠিত হয়:
.
└── test
├── a
│ └── a.js
├── b
│ └── b.js
├── common.js
└── top.js
top.js
:
function importTest(name, path) {
describe(name, function () {
require(path);
});
}
var common = require("./common");
describe("top", function () {
beforeEach(function () {
console.log("running something before each test");
});
importTest("a", './a/a');
importTest("b", './b/b');
after(function () {
console.log("after all tests");
});
});
importTest
ফাংশন শুধু প্রদর্শনী কিভাবে এটি সমগ্র আবার টাইপ করেও একাধিক মডিউল আমদানি পুনরাবৃত্তি হ্যান্ডেল আনা সম্ভব হবে হয় describe(... require...
জিনিস প্রতি একক সময়। common
মডিউল রাখা কি পরীক্ষা স্যুট একাধিক মডিউল ব্যবহার করতে হবে বোঝানো হয়। আমি আসলে এটি ব্যবহার করছি না top
তবে প্রয়োজনে এটি ব্যবহার করা যেতে পারে।
আমি এখানে লক্ষ্য করুন করবে beforeEach
প্রতিটি একক সাথে নিবন্ধিত পরীক্ষার আগে এটির কোড চালানো হবে it
কিনা তারা ভিতরে প্রদর্শিত describe
মধ্যে top
অথবা তারা প্রদর্শিত আমদানিকৃত মডিউল কোন । এর সাথে --recursive
, beforeEach
কোডটি প্রতিটি মডিউলে অনুলিপি করতে হবে বা আপনার beforeEach
প্রতিটি মডিউলে একটি হুক রয়েছে যা সাধারণ মডিউল থেকে আমদানি করা কোনও ফাংশন বলে।
এছাড়াও, after
হুক স্যুটটিতে সমস্ত পরীক্ষার পরে চলবে । এটি দিয়ে প্রতিলিপি করা যাবে না --recursive
। যদি আপনি প্রতিটি মডিউলে --recursive
কোডটি ব্যবহার করেন এবং যোগ করেন after
তবে পুরো পরীক্ষার জন্য একবারের পরিবর্তে এটি মডিউল প্রতি একবার কার্যকর করা হবে ।
সমস্ত পরীক্ষাগুলি একটি একক top
শিরোনামে প্রদর্শিত হচ্ছে ব্যবহার করে প্রতিলিপি করা যাবে না --recursive
। সঙ্গে --recursive
প্রতিটি ফাইল থাকতে পারে describe("top"
কিন্তু এই একটি নতুন তৈরি করবে top
প্রতিটি ফাইলের জন্য শিরোনাম নেই।
common.js
:
var chai = require("chai");
var options = {
foo: "foo"
};
exports.options = options;
exports.chai = chai;
exports.assert = chai.assert;
এরকম নামযুক্ত মডিউলটি ব্যবহার করা common
এমন কিছু যা আমি আমার পরীক্ষার স্যুটগুলিতে কিছু করেছি যাতে require
একগুচ্ছ পদার্থের ঝাঁক না পড়ে এবং বিশ্বব্যাপী পঠনযোগ্য কেবল পরিবর্তনশীল বা ফাংশন থাকে যা রাষ্ট্র রাখে না। আমি global
থাগসেকেলের উত্তরের মতো এই জিনিসটিকে দূষিত না করা পছন্দ করি কারণ এই কোডটি সত্যই বিশ্বব্যাপী এবং তৃতীয় পক্ষের লাইব্রেরিতে এমনকি আপনার কোডটি লোড হচ্ছে access এটি আমার কোডটিতে আমি গ্রহণযোগ্য বলে মনে করি না।
a/a.js
:
var common = require("../common");
var options = common.options;
var assert = common.assert;
it("blah a", function () {
console.log(options.foo);
assert.isTrue(false);
});
b/b.js
:
it("blah b", function () {});