【发布时间】:2011-01-30 11:55:51
【问题描述】:
我想我可能对 Moq 回调方法的语法有些困惑。当我尝试做这样的事情时:
IFilter filter = new Filter();
List<IFoo> objects = new List<IFoo> { new Foo(), new Foo() };
IQueryable myFilteredFoos = null;
mockObject.Setup(m => m.GetByFilter(It.IsAny<IFilter>()))
.Callback( (IFilter filter) => myFilteredFoos = filter.FilterCollection(objects))
.Returns(myFilteredFoos.Cast<IFooBar>());
这会引发异常,因为在Cast<IFooBar>() 调用期间myFilteredFoos 为空。这不按我的预期工作吗?我认为FilterCollection 会被调用,然后myFilteredFoos 将是非空的并允许演员。
FilterCollection 无法返回 null,这让我得出结论,它没有被调用。另外,当我这样声明myFilteredFoos 时:
Queryable myFilteredFoos;
Return 调用抱怨 myFilteredFoos 在初始化之前可能会被使用。
【问题讨论】:
标签: c# .net unit-testing mocking moq