我想知道在尝试对NServiceBus进行单元测试时是否有人知道这个问题。
意识到我下面有两个初始化方法,但这是为了说明我想要做什么。 根据请求进行堆栈跟踪。
(NServiceBus.LocalAddress)字典中不存在。 (NServiceBus.LocalAddress)字典中没有。
我相信堆栈跟踪的其他部分是抱怨InMemoryPersistence的红鲱鱼。但是,有一个谷歌小组正在讨论这个问题,他遇到了同样的问题,这让我觉得它更像是一个NServiceBus问题,而不是编码错误。
Google群组链接https://groups.google.com/forum/m/#!topic/particularsoftware/424_6KCv6oI
应该提到这些帖子。
https://github.com/Particular/NServiceBus.Testing/issues/20 https://github.com/Particular/NServiceBus.Testing/commit/f761c5391b03b05d967f2e368248c72522051d59
public static class CustomInit
{
public static void Init()
{
//Previous versions of NBUS, specifically 4.6.5
//MessageConventionExtensions.IsEventTypeAction = MessageConfiguration.ForEvents();
//MessageConventionExtensions.IsCommandTypeAction = MessageConfiguration.ForCommands();
//New 5.2.0 how to setup tests
Test.Initialize(x => x.AssembliesToScan(GetAssembliesToScan()));
Test.Initialize(
x =>
{
x.Conventions().DefiningCommandsAs([my namespace]);
x.Conventions().DefiningEventsAs([my namespace]);
x.AssembliesToScan(GetAssembliesToScan());
});
}
private static IEnumerable<Assembly> GetAssembliesToScan()
{
return new[]
{
AssemblyFromType<ISomeInterface>()
};
}
}
答案 0 :(得分:6)
在GitHub上提出问题后发现需要将NServiceBus.Testing作为程序集扫描的一部分。例如:
还应该指出,有关详细信息,我会访问GitHub链接。关于这个问题和解释的更多细节可以在那里找到。
public static void Init()
{
Test.Initialize(
x =>
{
x.Conventions().DefiningCommandsAs(x => x.Namespace.Contains("Commands"));
x.Conventions().DefiningEventsAs(x => x.Namespace.Contains("Events"));
x.AssembliesToScan(GetAssembliesToScan());
});
}
private static IEnumerable<Assembly> GetAssembliesToScan()
{
return new[]
{
AssemblyFromType<ISomeInterface>(),
Assembly.LoadFrom("NServiceBus.Testing.dll")
};
}
关键点是Assembly.LoadFrom("NServiceBus.Testing.dll")
干杯,DS。
答案 1 :(得分:1)
在我的情况下,测试在NCrunch中失败并显示此错误消息。
这可能是因为NCrunch正在从以下位置运行测试:
C:\Users\[username]\AppData\Local\NCrunch\...
解决方案是:
NCrunch -> Configuration
选择受影响的项目,并将“将引用的程序集复制到工作区”标记设置为 True 。