gpt4 book ai didi

asp.net-mvc - asp.net mvc - 如何快速高效地创建假测试对象

转载 作者:行者123 更新时间:2023-12-02 00:39:41 27 4
gpt4 key购买 nike

我目前正在我的 mvc 应用程序中测试 Controller ,我正在创建一个用于测试的假存储库。但是,与在实际存储库上相比,我似乎正在编写更多代码并花费更多时间在假货上。这样对吗?

我的代码如下:

Controller

public partial class SomeController : Controller
{
IRepository repository;

public SomeController(IRepository rep)
{
repository = rep;
}

public virtaul ActionResult Index()
{
// Some logic
var model = repository.GetSomething();

return View(model);
}
}

IRepository

public interface IRepository
{
Something GetSomething();
}

假仓库

public class FakeRepository : IRepository
{
private List<Something> somethingList;

public FakeRepository(List<Something> somethings)
{
somthingList = somthings;
}

public Something GetSomething()
{
return somethingList;
}
}

虚假数据

class FakeSomethingData
{
public static List<Something> CreateSomethingData()
{
var somethings = new List<Something>();

for (int i = 0; i < 100; i++)
{
somethings.Add(new Something
{
value1 = String.Format("value{0}", i),
value2 = String.Format("value{0}", i),
value3 = String.Format("value{0}", i)
});
}

return somethings;
}
}

实际测试

[TestClass]
public class SomethingControllerTest
{
SomethingController CreateSomethingController()
{
var testData = FakeSomethingData.CreateSomethingData();
var repository = new FakeSomethingRepository(testData);

SomethingController controller = new SomethingController(repository);

return controller;
}

[TestMethod]
public void SomeTest()
{
// Arrange
var controller = CreateSomethingController();

// Act
// Some test here

// Arrange
}
}

所有这些似乎都是很多额外的代码,尤其是当我有多个存储库时。有没有更有效的方法来做到这一点?也许使用模拟?

谢谢

最佳答案

您可以模拟存储库。

(我使用 Moq , Mock a database repository using Moq )

关于asp.net-mvc - asp.net mvc - 如何快速高效地创建假测试对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3068302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com