আপনি একাধিক মডিউল অন্তর্ভুক্ত করতে চাইলে মধ্যে আপনার 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 () {});