1

Ninject を使用して MS Unit Test クラスのコンストラクターに依存関係を注入する方法があることを知りたいです。

リポジトリのコード スニペットは次のとおりです。

public Class StudentRepository : IRepository
{   
   SchoolContext schoolContext;

   public StudentRepository ()
   {
       schoolContext= new SchoolContext();
   } 

   public IEnumerable<Student> GetAll()
   {
       return DBContext.Students.ToList();
   }

} 

ここにIOC構成のコードがあります

public class IocConfig
{
    public static void RegisterIoc()
    {
        var kernel = new StandardKernel();
        kernel.Bind<IRepository>().To<StudentRepository>();          
    }
}

MSユニットテストのコードは次のとおりです。

[TestClass]
public Class StudentReposiotryTest    
{     

    public IRepository studentRepository;

    [ClassInitialize]
    public static void StudentReposiotryInitialize(TestContext context)
    {
        IocConfig.RegisterIoc();            
    }

     public StudentReposiotryTest(IRepository repository)
     {
         studentRepository= repository;
     }      


    [TestMethod]
    public void GetAllStudentsTest()
    {            
        List<Student> students =  studentRepository.GetAll();
        Assert.IsTrue(students.Count > 0);
    }   

}
4

1 に答える 1

1

私の知る限り、MSTest には DI 用のフックがありません。

ただし、単体テストは単純に保つ必要があるため、通常はそうする必要はありません。Fakes/Mocks をテスト対象のクラスに注入するだけで、IoC コンテナーがなくても簡単に実行できます。

于 2013-02-15T08:25:09.413 に答える