0

我正在尝试为一些开源代码编写一些单元测试。

其中一项测试将测试只有最少数量的记录已加载到内存中(即,如果有人要调用:

 DataContext.SomeTable.ToList().Where(s=>s.Id <=10)

测试应该失败)

为此,应在单元测试执行之前将 DataContext.SomeTable.Load 重置为 0 个项目。

目前,这个TestFixture(使用nunit,但应该不相关)是抽象的,在实例化时注入了DbContext,以便单元测试可以测试不同的提供者。我不相信有办法清除加载的实体,但想知道如何处理和创建一个新的 DbContext,它使用与注入上下文相同的数据库提供程序。

4

2 回答 2

1

首先,你能发布你的代码吗?

其次,如果我理解正确,您想每次都重新创建上下文吗?一种解决方案是传入一个函数来创建上下文而不是上下文本身。像这样:

public class MyTest {

    private Func<IMyContext> createContext;

    public MyTest(Func<IMyContext> createContext){
       this.createContext = createContext;
    }

    [Test]
    public void RunTest(){
        using(var context = this.createContext()){
             // do stuff with context
        }
    }
}
于 2013-04-26T15:35:13.630 回答
0
public class TestClass
{
    private MyContext context;

    [SetUp]
    public void Setup()
    {
        // is executed before each test
        context = new MyContext();
    }

    [Test]
    public void Test1()

        context.SomeTable.ToList().Where(s => s.Id <= 10);
    }

    [TearDown]
    public void Complete()
    {
        context.Dispose();
    }

}

每个测试应该只访问一次表。单元测试的要点是每个测试都是针对单个场景的。

于 2013-04-26T10:36:28.370 回答