Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何测试存储库?_C#_.net_Asp.net Mvc_Git - Fatal编程技术网

C# 如何测试存储库?

C# 如何测试存储库?,c#,.net,asp.net-mvc,git,C#,.net,Asp.net Mvc,Git,tag1 tag2 tag3已创建并存在于数据库中 我做错了什么? 能给我一个解决方案吗 GUID在另一个.cs中配置 public class UnitTest1 { TagRepo _tagRepo = new TagRepo(); [TestMethod] public void Test_Method_Delete() { Tag tag = new Tag() { Name = "Test tag

tag1 tag2 tag3已创建并存在于数据库中

我做错了什么? 能给我一个解决方案吗


GUID在另一个.cs中配置

public class UnitTest1
{
    TagRepo _tagRepo = new TagRepo();

    [TestMethod]
    public void Test_Method_Delete()
    {
        Tag tag = new Tag()
        {
            Name = "Test tag5"
        }; 
        Tag tag1 = new Tag()
        {
            Name = "Test tag3"
        }; 
        Tag tag2 = new Tag()
        {
            Name = "Test tag4"
        };

        _tagRepo.Delete(GetById(tag.Id));
    }
}

您没有在标记变量上设置Id属性,因此它肯定无法从数据库中加载它

尝试将测试方法更改为以下内容:

HasKey(key => key.ID);
Property(key => key.ID)
  .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName("Id");

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new ConfigTag());
    base.OnModelCreating(modelBuilder);
}

出于测试目的,使用工作单元模式和虚拟上下文。

GUID在另一个.cs HasKey(key=>key.ID)中配置;属性(key=>key.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName(“ID”);protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new ConfigTag());base.OnModelCreating(modelBuilder);}@McCorn但您没有在标记上设置Id属性,单元测试中的tag1或tag2变量那么GetById方法应该如何工作呢?它们都将具有Guid.Empty作为一个值,我怀疑您的数据库中是否存在该值。数据库中的Guid不是空的或null。它一直是generated@McCorn您可以尝试将在DB中生成的GUID分配给您的tag、tag1和tag2变量吗?由于要初始化的对象没有设置Id,因此无法唯一标识要删除的标记
HasKey(key => key.ID);
Property(key => key.ID)
  .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName("Id");

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new ConfigTag());
    base.OnModelCreating(modelBuilder);
}
[TestMethod]
public void Test_Method_Delete()
{
    Tag tag = new Tag()
    {
        Id = Guid.Parse(""), // Inside the quotes use a valid Id from your database.
        Name = "Test tag5"
    }; 
    Tag tag1 = new Tag()
    {
        Name = "Test tag3"
    }; 
    Tag tag2 = new Tag()
    {
        Name = "Test tag4"
    };

    _tagRepo.Delete(GetById(tag.Id));
}