【发布时间】:2009-12-28 16:47:00
【问题描述】:
我在测试时经常遇到这个错误。我什至无法创建应该返回 RoleRepository 的 IRoleRepository 实例。
这里是错误:
TestCase 'EStudy.Repository.Tests.when_fetching_instance_of_role_repository_using_structuremap.should_fetch_successfully'
失败:StructureMap.StructureMapException:StructureMap 异常代码:202
没有为 PluginFamily EStudy.Domain.Model.Model.EStudyModelDataContext、EStudy.Domain.Model、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 定义默认实例
在 StructureMap.BuildSession.<.ctor>b__0(类型 t)
在 StructureMap.Util.Cache2.get_Item(KEY key)
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Pipeline.DefaultInstance.build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.ConfiguredInstanceBase1.getChild(String propertyName, Type pluginType, BuildSession buildSession)
在 StructureMap.Pipeline.ConfiguredInstanceBase1.StructureMap.Pipeline.IConfiguredInstance.GetChild(String propertyName, Type pluginType, BuildSession buildSession)
at EStudyDomainModelRepositoriesRoleRepositoryInstanceBuilder4c713d65fe464f4792cd90352224a54b.BuildInstance(IConfiguredInstance , BuildSession )
at StructureMap.Pipeline.ConfiguredInstanceBase1.StructureMap.Pipeline.IConfiguredInstance.Build(类型 pluginType,BuildSession 会话,InstanceBuilder 生成器)
在 StructureMap.Pipeline.ConfiguredInstanceBase1.build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.BuildPolicy.Build(BuildSession buildSession, Type pluginType, Instance instance)
at StructureMap.InstanceFactory.Build(BuildSession session, Instance instance)
at StructureMap.BuildSession.CreateInstance(Type pluginType, Instance instance)
at StructureMap.BuildSession.<.ctor>b__0(Type t)
at StructureMap.Util.Cache2.get_Item(KEY key)
在 StructureMap.BuildSession.CreateInstance(类型 pluginType)
在 StructureMap.Container.GetInstance(类型 pluginType)
在 StructureMap.Container.GetInstanceT
在 StructureMap.ObjectFactory.GetInstancePLUGINTYPE
C:\Projects\EStudyVS2008\EStudySoltution\EStudy.Repository.Tests\Test_StructureMapConfiguration.cs(41,0):在 EStudy.Repository.Tests.when_fetching_instance_of_role_repository_using_structuremap.should_fetch_successfully()
[TestFixture]
public class when_fetching_instance_of_estudy_data_context_using_structuremap : BaseTest
{
[Test]
public void should_fetch_successfully()
{
Assert.IsNotNull(ObjectFactory.GetInstance<EStudyModelDataContext>());
}
}
BaseTest:
public class BaseTest
{
private TransactionScope _scope;
static BaseTest()
{
EStudy.Domain.Model.Configuration.StructureMapConfiguration.Configure();
}
And here is the StructureMapConfiguration.Configure method;
public class StructureMapConfiguration
{
public static void Configure()
{
ObjectFactory.Initialize(InitializeStructureMap);
ObjectFactory.Initialize(j =>
{
j.ForRequestedType<EStudyModelDataContext>().TheDefault.Is.OfConcreteType<EStudyModelDataContext>().WithCtorArg("connection")
.EqualTo(ConfigurationManager.ConnectionStrings["EStudyTestDatabaseEntities"].ConnectionString);
});
}
public static void InitializeStructureMap(IInitializationExpression x)
{
x.Scan(y =>
{
y.Assembly("EStudySoltution.EStudy.Domain.Model");
y.With<DefaultConventionScanner>();
}
);
}
【问题讨论】:
标签: structuremap