私はASP.NET MVCプロジェクトを開発しています。私のプロジェクトでは、単体テストをやっています。私はユニットテストのためにMoqを使用します。しかし、私はモデルクラスのメソッドのテストに問題を抱えています。これはそのクラスの別の関数に依存しています。下記の私のシナリオをご覧ください。ASP.NET MVCユニットテストでMoqを使用してテストクラス自体の機能を模擬する方法
これは私がGenerateItemCode方法に
[TestClass]
public class ItemRepoTests
{
[TestMethod]
public void GenerateItemCode_IncreaseDigit()
{
Item[] items = new Item[]{
new Item{
ItemCode = "DN999934"
}
};
ItemRepo itemRepo = new ItemRepo();
//I want to mock GetItems method here
}
}
をテストしたい私は
public class ItemRepo:IItemRepo
{
private DbContext context = new DbContext();
public IEnumerable<Item> GetItems()
{
return context.items;
}
public string GenerateItemCode()
{
Item item = this.GetItems.OrderByDescending(x=>x.Id).FirstOrDefault();
//do something
return itemCode;
}
}
をテストしたいモデルクラスのサンプルである私は、私がテストコードでモックとしたいものをコメントしています。どのように私はその方法を模擬することができますか?どのように私は、そのメソッドのモック依存関係関数をテストすることができますか?
'items'はどのようにモデルに導入されますか? 。それは内部で作成されるか、クラスに注入されますか? – Nkosi
この質問のGetItemsメソッドのコードはかなり重要です。データベースからデータを取得する方法を示すように、追加してください。たとえば、EF DbContextを使用している場合、単体テストを実行するための模擬DbContextを注入することをお勧めします。 – uk2k05
GetItemsメソッドは返されるcontext.Items –