我正在使用 Microsoft 单元测试并具有以下内容:
public class AccountCommandHandlers :
Handler<CreateAccountCommand>,
Handler<CloseAccountCommand>
{
public bool CreateAccountCommandWasCalled = false;
public bool CloseAccountCommandWasCalled = false;
public void Handle(CreateAccountCommand command)
{
CreateAccountCommandWasCalled = true;
}
public void Handle(CloseAccountCommand command)
{
CloseAccountCommandWasCalled = true;
}
}
[TestMethod]
public void CanRaiseInternalHandlers()
{
var iocContainer = SimpleInjectorWiringForMembus.Instance;
iocContainer.Bootstrap(
AppDomain.CurrentDomain.GetAssemblies());
var membus = MembusWiring.Instance;
membus.Bootstrap();
membus.Bus.Publish(new CreateAccountCommand() { Id = 100 });
membus.Bus.Publish(new CloseAccountCommand() { Id = 100 });
}
我正在使用一个处理对象生命周期范围的 IoC 容器(简单注入器)。Membus 将命令连接到命令处理程序,并通过 IoC 容器进行解析。
上面的代码运行和工作,命令处理程序将它们的局部变量设置为 true。
但是,由于 Simple Injector 处理生命周期范围,我不能向 Simple Injector 询问AccountCommandHandler
对象,因为它会返回一个CreateAccountCommandWasCalled
设置为 false 的新对象。
CreateAccountCommandWasCalled
作为单元测试的新手,除了设置为静态变量之外,还有什么更健壮的测试方法?