c# - 使用 Rhino Mocks 模拟 IObjectSet<T>

标签 c# entity-framework-4 rhino-mocks

有没有办法使用 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/

相关文章:

c# - 使用 C# 从 AST 制作一个真正的解释器

c# - await Task.Run(() => semaphore.WaitOne()) 有什么问题吗?

c# - 如何在我想使用 NUnit 测试的方法中模拟方法调用?

c# - Rhino 模拟 - AssertWasCalled : How to improve unclear diagnostic message when incorrect arguments

c# - 泛型和转换 - 不能将继承的类转换为基类

c# - 如何在 ASP MVC 中使用 JavaScript 禁用 EditorFor

c# - 如何快速加载相关实体

.net - MySQL Entity Framework 4.0 存储过程字段映射

entity-framework - 首先在 Entity Framework 代码中检索关联表中的值

.net - 如何对使用 PetaPoco.Database 的服务进行单元测试