1

したがって、ここに2つのエンティティ(多対多の関係を持つ)があります:

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

2 つのリポジトリを使用:

   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

モックを設定する前に、エンティティを作成できます。

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 に答える