আমি সবেমাত্র গুইসের সাথে খেলতে শুরু করেছি এবং এমন একটি ব্যবহারের ক্ষেত্রে যা আমি ভাবতে পারি তা হ'ল একটি পরীক্ষায় আমি কেবল একটি একক বাঁধাইকে ওভাররাইড করতে চাই। আমার মনে হয় যে সবকিছু সঠিকভাবে সেট আপ হয়েছে এবং নকলটি এড়ানোর জন্য আমি বাকি উত্পাদন স্তরের বাইন্ডিংগুলি ব্যবহার করতে চাই।
সুতরাং আমার নিম্নলিখিত মডিউলটি কল্পনা করুন
public class ProductionModule implements Module {
public void configure(Binder binder) {
binder.bind(InterfaceA.class).to(ConcreteA.class);
binder.bind(InterfaceB.class).to(ConcreteB.class);
binder.bind(InterfaceC.class).to(ConcreteC.class);
}
}
এবং আমার পরীক্ষায় আমি কেবল ইন্টারফেসএ এবং ইন্টারফেসবি কৌশলে রাখার সময় ইন্টারফেস সিটিকে ওভাররাইড করতে চাই, তাই আমি এর মতো কিছু চাই:
Module testModule = new Module() {
public void configure(Binder binder) {
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(new ProductionModule(), testModule);
আমি ভাগ্যবিহীন, নিম্নলিখিতগুলিও চেষ্টা করেছি:
Module testModule = new ProductionModule() {
public void configure(Binder binder) {
super.configure(binder);
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(testModule);
আমার যা ইচ্ছা তা করা সম্ভব কিনা তা কি কেউ জানেন বা আমি ভুল গাছটিকে পুরোপুরি ছাঁটাই করছি ??
--- ফলোআপ করুন: মনে হয় আমি ইন্টারফেসে @ ইমপ্লিমেন্টেড বাই ট্যাগটি ব্যবহার করি এবং তারপরে পরীক্ষার ক্ষেত্রে একটি বাঁধাই সরবরাহ করি তবে আমি যা চাই তা অর্জন করতে পারি, যা 1-1 এর মধ্যে 1-1 ম্যাপিংয়ের সময় দুর্দান্তভাবে কাজ করে ইন্টারফেস এবং বাস্তবায়ন।
এছাড়াও, কোনও সহকর্মীর সাথে এটি আলোচনা করার পরে মনে হবে আমরা একটি সম্পূর্ণ মডিউলকে ওভাররাইড করে আমাদের মডিউলগুলি সঠিকভাবে সংজ্ঞায়িত করার বিষয়টি নিশ্চিত করব road এটি দেখে মনে হচ্ছে এটি সমস্যা তৈরি করতে পারে যদিও মডিউলটিতে একটি বাঁধাই ভুল জায়গায় স্থানান্তরিত করা দরকার এবং সম্ভবত এটি পরীক্ষা করা অনেকটা ব্রেক করা সম্ভবত বাইন্ডিংগুলি ওভাররাইডের জন্য আর উপলব্ধ না হয়ে থাকতে পারে।