1

所以我有两个实体(具有多对多关系),它们是:

public class Tag
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Video> Videos { get; set; }
}

public class Video
{
    [Key]
    public int ID { get; set; }
    public string EmbedSource { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

有两个存储库:

   public interface ITagsRepository
    {
        IQueryable<Tag> GetTags { get; }
    }

public interface IVideosRepository
{
     IQueryable<Video> GetVideos { get; }
}

现在我试图在我的ninject控制器中模拟它们,不幸的是,作为一个初学者,我遇到了一个问题,因为我的每个实体都需要另一个,我无法模拟它们,具有讽刺意味的是,我似乎陷入了无限循环:

private void AddBindings()
    {
      Mock<IVideosRepository>  mock = new Mock<IVideosRepository>();
        mock.Setup(m => m.GetVideos).Returns(new List<Video>
        {
            new Video {EmbedSource = "embedcode", ID = 1, Tags = new Tag {ID = 0, Name = "testtestest", Video = new Video ... etc etc}
        })
    }

我正在寻找一种更快/更清洁的方法来实现这一目标。

4

1 回答 1

1

您可以在设置 Mock 之前创建实体:

var video1 = new Video {EmbedSource = "embedcode", ID = 1};
var video2 ...
var tag1 = new Tag {ID = 0, Name = "testtestest"};
var tag2 ...
video1.Tags = new List<Tag> { tag1, tag2 };
tag1.Videos = new List<Video> { video1, video2};

Mock<IVideosRepository>  mock = new Mock<IVideosRepository>();
  mock.Setup(m => m.GetVideos).Returns(new List<Video>
  {
    video1, video2
  })
于 2013-07-26T01:16:33.510 回答