1
我已经为我正在处理的项目实现了命令/查询体系结构,但是在测试需要使用关联工厂的类时遇到了问题。我的体系结构的基础上,可以在这里找到:https://cuttingedge.it/blogs/steven/pivot/entry.php?id=92单元测试通用查询工厂
特别是,我有类似以下
public interface IQueryFactory
{
TQuery CreateQuery<TQuery, TResult>()
where TQuery : IQuery<TResult>;
}
public interface IQuery<TResult>
{
}
public interface IQueryHandler<in TQuery, out TResult>
where TQuery : IQuery<TResult>
{
TResult Execute(TQuery query);
}
public interface IQueryHandlerFactory
{
IQueryHandler<TQuery, TResult> CreateQueryHandler<TQuery, TResult>()
where TQuery : IQuery<TResult>;
}
public class GetFooDataQuery : IQuery<IEnumerable<FooData>>
{
public int FooId { get; set; }
}
public class GetFooQueryHandler : IQueryHandler<GetFooDataQuery, IEnumerable<FooData>>
{
private readonly IFooRepository _fooRepository;
public GetFooDataQueryHandler(IFooRepository fooRepository)
{
_fooRepository = fooRepository;
}
public IEnumerable<FooData> Execute(GetFooDataQuery query)
{
return _fooRepository.Foo.Where(x => x.fooId > query.FooId).ToList();
}
}
我的课需要查询数据库的东西有一个构造函数,包括查询工厂和查询处理工厂。一切都通过Ninject连接起来。
它工作正常,但我发现很难创建包含查询工厂的任何类的单元测试,因为我需要包含工厂作为构造函数的一部分。任何帮助将不胜感激。
我可能不太清楚我的问题,我很抱歉。在测试依赖查询和查询处理程序的类时遇到问题。 它们的构造函数需要一个QueryHandlerFactory和一个QueryFactory。我需要能够实例化/模拟这些以测试业务逻辑。 虽然为IQueryHandlerFactory和IQueryFactory创建测试类,但遇到问题 – user2725951 2015-04-02 18:29:25
如果您正在测试的代码实际上并未使用该依赖关系,则只需传递一个null。如果它使用依赖关系,则需要为这些接口创建测试类。你有什么问题创建这些类?如果你在你的测试类的界面上右击并选择“Implement Interface”,它是否实现了你可以使用的东西? – Grax 2015-04-02 18:53:12