我想编写一些单元测试,以确保我的域命名空间和我的IUnitOfWork
接口已正确同步。
例如,如果我有一个Foo
的域实体,我应该在IUnitOfWork接口中有一个类型为IQueryable的属性。如果我有:
namespace My.Domain
{
public class Foo : IEntity<Guid>
{
//properties
}
}
namespace My.Interfaces
{
public interface IUnitOfWork
{
public IQueryable<Foo> Foos { get; }
}
}
我开始进行单元测试:
private static readonly Assembly _assembly = typeof(Assembly.Class).Assembly;
[TestMethod]
public void AllEntitiesInNamespaceHaveCorrespondingIUnitOfWorkProperties()
{
var classesInDomainNamespace = _assembly.GetTypes()
.Where(x => string.Equals(x.Namespace, "My.Domain", StringComparison.Ordinal))
.Distinct();
var entitiesInUnitOfWork = typeof(IUnitOfWork).GetProperties()
.Where(x => x.PropertyType.IsAssignableFrom(typeof(IQueryable<IEntity<Guid>>)))
.Distinct();
}
......这就是我开始遇到问题的地方。理想情况下,我想断言classesInDomainNamespace
和entitiesInUnitOfWork
中的记录数是相同的,但在处理泛型时,事情会变得奇怪。
我将如何编写此单元测试?
答案 0 :(得分:1)
这会有帮助吗?:
$map = array(
0 => array('childen' => array())
);
foreach ($menus as &$menu) {
$menu['children'] = array();
$map[get_value($menu, 'id_menu')] = &$menu;
}
foreach ($menus as &$menu) {
$map[get_value($menu, 'id_menu_parent')]['children'][] = &$menu;
}
return $map[0]['children'];
这不是testet。甚至没有编译 - 但我希望它给出正确的提示。