我遇到了一个问题,即使用 Visual Studio 在我的本地机器上测试成功,但是当我的 CI Build 在我的 TFS 服务器上运行它们时它们会失败。
这是失败的行和上下文的前行。
var mockEventRepository = Substitute.For<IEventRepository>();
mockEventRepository.GetAll().ReturnsForAnyArgs(r => new List<Event>().AsQueryable());
请注意,没有参数匹配器!在整个测试中没有一个。
TFS 会报错:
NSubstitute.Exceptions.UnexpectedArgumentMatcherException : 参数匹配器 (Arg.Is, Arg.Any) 只能用来代替成员参数。不要在 Returns() 语句或成员调用之外的任何其他地方使用。
简而言之,错误在发生时似乎是一致的(相同的错误),但它们似乎也会随机发生或不发生。
例如......它只是在原始构建失败后将后续相同构建排队后成功。但是,当它尝试使用不同配置的相同构建并出现不同但相似且错误的错误时,它失败了:
NSubstitute.Exceptions.AmbiguousArgumentsException :无法确定要使用的参数规范。
仅供参考,使用 TFS 2015 和 VS 2015。