2013-07-26 59 views
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} 
     }) 
    } 

我正在尋找更快/更清潔的方式來實現這一目標。

回答

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