与嘲弄有很多很多关系

时间:2013-07-26 00:11:34

标签: c# asp.net-mvc

所以我在这里有两个实体(有很多关系):

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}
        })
    }

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

1 个答案:

答案 0 :(得分:1)

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

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
  })