gpt4 book ai didi

c# - 使用 Rhino Mocks 模拟 IObjectSet

转载 作者:行者123 更新时间:2023-11-30 13:51:02 26 4
gpt4 key购买 nike

有没有办法使用 Rhino Mocks 为 IObjectSet<T> 生成 stub ?

我要的是类似下面的代码:

var context = MockRepository.GenerateMock <IContext>();
//generate stub
var mockProjectObjectSet = MockRepository.GenerateStub<IObjectSet<Project>>();
TestObjectSets.GenerateFakeProjectList(mockProjectObjectSet);
context.Expect(p => p.Projects).Return(mockProjectObjectSet);
var projectRepository = new ProjectRepository(context);

GenerateFakeProjectList静态辅助方法,我只是简单地创建指定类型的对象并通过 AddObject 将它们添加到 stub 中IObjectSet 上的方法:

public static IObjectSet<Project> GenerateFakeProjectList(IObjectSet<Project> projectsObjectSet)
{
projectsObjectSet.AddObject(new Project()
{
Categories = null,
DateCreated = DateTime.Now.AddDays(-10),
.......

最佳答案

我知道我来晚了,但这是 IObjectSet<T> 的简单实现我以前用过的。我忘了我从哪里得到的:

public class MockObjectSet<T> : IObjectSet<T> where T : class {
readonly List<T> _container = new List<T>();

public void AddObject(T entity) {
_container.Add(entity);
}

public void Attach(T entity) {
_container.Add(entity);
}

public void DeleteObject(T entity) {
_container.Remove(entity);
}

public void Detach(T entity) {
_container.Remove(entity);
}

public IEnumerator<T> GetEnumerator() {
return _container.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator() {
return _container.GetEnumerator();
}

public Type ElementType {
get { return typeof(T); }
}

public System.Linq.Expressions.Expression Expression {
get { return _container.AsQueryable<T>().Expression; }
}

public IQueryProvider Provider {
get { return _container.AsQueryable<T>().Provider; }
}
}

关于c# - 使用 Rhino Mocks 模拟 IObjectSet<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com