मैं अपनी कक्षाओं में से एक के लिए काम कर रहे यूनिट परीक्षण प्राप्त करने के लिए संघर्ष कर रहा हूं। मैं autofac संकल्प के autogenerated कारखाने के बजाय अपने कारखाने इंजेक्षन करना चाहता हूँ। स्वत: जनरेटेड प्रतिनिधि कारखाने को बदलने के लिए प्रतिनिधि के रूप में मैं अपना खुद का कार्य कैसे पंजीकृत करूं?मैं ऑटोफैक के स्वत: जेनरेटेड प्रतिनिधि कारखानों का नकल कैसे करूं?
मेरे कोड दिखता है कुछ इस तरह रूपरेखा रूप है:
interface IEntryImporter { ... }
class EntryImporter : IEntryImporter {
public EntryImporter(ISeries series, IMatch match, Entry.Factory entryFactory) {
:
}
:
}
interface IEntry : { ... }
class Entry : IEntry {
public delegate IEntry Factory();
public Entry() { ... }
}
interface IMatch : { ... }
class Match : IMatch { ... }
interface ISeries : { ... }
class Series : ISeries { ... }
void IEntry MyEntryFactory() {
var entry = new Mock<IEntry>();
:
return entry.Object;
}
void TestMe() {
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<Entry>().As<IEntry>();
builder.RegisterType<Match>().As<IMatch>();
builder.RegisterType<Series>().As<ISeries>();
builder.RegisterType<EntryImporter>.As<IEntryImporter>();
var series = new Mock<ISeries>(MockBehavior.Strict);
builder.RegisterInstance<ISeries>(series.Object);
var match = new Mock<IMatch>(MockBehavior.Strict);
builder.RegisterInstance<IMatch>(match.Object);
// How to register MyEntryFactory as Entry.Factory for autofac to resolve?
using(var container = builder.Build()) {
var importer = container.Resolve<IEntryImporter>();
:
}
}