Mar*_*ius 8 .net c# structuremap
我有一个这样的注册表类:
public class StructureMapRegistry : Registry
{
public StructureMapRegistry()
{
For<IDateTimeProvider>().Singleton().Use<DateTimeProviderReturningDateTimeNow>();
}
Run Code Online (Sandbox Code Playgroud)
我想根据我的意图测试配置,所以我开始编写测试:
public class WhenConfiguringIOCContainer : Scenario
{
private TfsTimeMachine.Domain.StructureMapRegistry registry;
private Container container;
protected override void Given()
{
registry = new TfsTimeMachine.Domain.StructureMapRegistry();
container = new Container();
}
protected override void When()
{
container.Configure(i => i.AddRegistry(registry));
}
[Then]
public void DateTimeProviderIsRegisteredAsSingleton()
{
// I want to say "verify that the container contains the expected type and that the expected type
// is registered as a singleton
}
}
Run Code Online (Sandbox Code Playgroud)
如何验证注册表是否符合我的期望?注意:我介绍了容器,因为我没有在Registry类上看到任何可用的验证方法.理想情况下,我想直接在注册表类上进行测试.
将注册表类视为一个配置文件 - 单独测试它并没有真正的意义,但您可能想测试另一个类如何响应它。在这种情况下,您将测试容器在给定注册表时的行为方式,因此通过将容器引入测试您走上了正确的道路。
在测试中,您可以请求 IDateTimeProvider 并断言返回的具体类型是您期望的类型。您还可以从容器中检索 2 个实例并断言它们是同一实例 (ReferenceEquals) 以验证单例行为。
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |