WCF和单元测试的不同SessionContexts

时间:2014-12-20 17:49:39

标签: nhibernate fluent-nhibernate sessioncontext

我在IIS上运行我的应用程序来测试我的服务是否按预期工作。另外,我运行其他内部类操作的单元测试。

以下是我的会话工厂配置:

Fluently.Configure()
                .Database(MySQLConfiguration.Standard
                              .ConnectionString(myconnectionString)
                              .ShowSql()
                )
                .CurrentSessionContext<WcfOperationSessionContext>()
                //.CurrentSessionContext("call")
                .Mappings(m =>
                          m.FluentMappings
                              .AddFromAssemblyOf<DtoDifficulty>())
                .BuildSessionFactory();

您可以通过 //。CurrentSessionContext(“call”)注意到注释行。当我在IIS上运行我的服务时,我必须使用它上面的行 .CurrentSessionContext&lt; WcfOperationSessionContext&gt;(),当我运行单元测试时, .CurrentSessionContext(“call”)

有没有办法知道哪个案例正在运行并自动设置其中一个选项?

1 个答案:

答案 0 :(得分:0)

我找到了一种选择正确背景的方法。如果我运行单元测试,HttpContext.Current返回null。当我运行我的服务时,它返回一个对象的实例。

以下是代码:

var fluentConfiguration = Fluently.Configure().Database(MySQLConfiguration.Standard
                                                                .ConnectionString(myConnectionString)
                                                                .ShowSql()
                                                           );

var hasHttpContext = HttpContext.Current != null;

if (hasHttpContext)
    fluentConfiguration.CurrentSessionContext<WcfOperationSessionContext>();
else
    fluentConfiguration.CurrentSessionContext("call");

_sessionFactory = fluentConfiguration
                                    .Mappings(m =>
                                              m.FluentMappings
                                              .AddFromAssemblyOf<DtoDifficulty>())
                                    .BuildSessionFactory();