0

我正在研究packtpub的单元测试实体框架核心食谱,有一个例子(我做了一些改变)

[Fact]
public void CanCreateDatabase()
{
    var blogContext = new BlogContext(_builder.Options);

    var created = blogContext.Database.EnsureCreated();

    Assert.True(created);
}

[Fact]
public void CanRetrieveRecord()
{
    var blogContext = new BlogContext(_builder.Options);

    var blog1 = blogContext.Blogs.FirstOrDefault();

    Assert.Contains("Development", blog1.Name);
}

第一次测试失败,第二次通过。我很确定数据库已经创建,这就是为什么第二个测试通过了,但是为什么第一个测试失败了?

4

1 回答 1

3

基于EnsureCreated 此处的文档

返回
System.Boolean
如果数据库已创建,则返回 True,如果已存在则返回 false。

在上述测试中,假设不存在数据库,对于第一次测试运行,EnsureCreated将创建数据库并通过测试。但是对于任何后续运行,数据库已经存在,因此EnsureCreated返回 false。也许您想使用EnsureDeletedbeforeEnsureCreated来确保删除数据库,以便您可以测试它实际创建的情况。

于 2017-06-30T18:28:28.083 回答