相关疑难解决方法(0)

以下列方式对ASP.NET MVC代码进行单元测试可能存在哪些问题?

我一直在关注NuGetGallery中单元测试的方式.我观察到,当测试控制器时,服务类被模拟.这对我来说很有意义,因为在测试控制器逻辑时,我不想担心下面的架构层.在使用这种方法一段时间之后,我注意到当我的服务类发生变化时,我经常在我的控制器测试中修复我的模拟.为了解决这个问题,在没有咨询比我更聪明的人的情况下,我开始编写这样的测试(别担心,我没有那么远):

public class PersonController : Controller
{
    private readonly LESRepository _repository;

    public PersonController(LESRepository repository)
    {
        _repository = repository;
    }

    public ActionResult Index(int id)
    {
        var model = _repository.GetAll<Person>()
            .FirstOrDefault(x => x.Id == id);

        var viewModel = new VMPerson(model);
        return View(viewModel);
    }
}

public class PersonControllerTests
{
    public void can_get_person()
    {
        var person = _helper.CreatePerson(username: "John");
        var controller = new PersonController(_repository);
        controller.FakeOutContext();

        var result = (ViewResult)controller.Index(person.Id);
        var model = (VMPerson)result.Model;
        Assert.IsTrue(model.Person.Username == "John");
    }
}
Run Code Online (Sandbox Code Playgroud)

我想这将是集成测试,因为我使用的是真正的数据库(我更喜欢内存数据库).我通过将数据放入我的数据库开始我的测试(每个测试在一个事务中运行,并在测试完成时回滚).然后我调用我的控制器,我真的不在乎它如何从数据库中检索数据(通过存储库或服务类)只是要发送到视图的模型必须有我放入数据库的记录,也就是我的断言.关于这种方法的一个很酷的事情是,很多时候我可以继续添加更多层的复杂性,而无需更改我的控制器测试:

public class PersonController …
Run Code Online (Sandbox Code Playgroud)

unit-testing asp.net-mvc-3

4
推荐指数
1
解决办法
1363
查看次数

在成熟的库/框架上改进单元/回归测试?

我团队的一个持续关键点是我们的"共同"图书馆.(在这里查看相关问题,说"框架"可能更为正确).

目前包含v1,v2和v3.其中v3用于所有新应用程序.它包含多个WCF服务,一个包含业务对象的类库,以及一个用于js/css/images的公共Web目录.

我们希望在我们前进的过程中做正确的事情,特别是因为我们都积极开始为共同图书馆做出贡献.它变成了一个巨大的泥球,并且部署它对每个人来说都是可怕的.

我们首先想到的是设置一个测试服务器,在所有代码中运行单元测试,以确保没有任何中断.问题是为所有内容编写测试非常繁琐,坦率地说,没有人有这样的时间.我们对编写适当的单元测试也缺乏经验.话虽如此,如果这是最好的路线,我们会完成它.

在那之后,我们不太确定.我们将公共代码视为应用持续集成实践的地方,因为我们编写了许多使用它的不同应用程序.

这也引入了一些问题,例如将DLL复制到本地,或者将某些内容放在某个服务器上.我们已经感觉我们在DLL地狱,想要离开.

(好)软件商店用来管理这种情况的策略是什么?

任何和所有的建议表示赞赏.如果需要更多信息,请询问.我很乐意提供它.

谢谢!

javascript c# wcf frameworks

4
推荐指数
1
解决办法
884
查看次数

标签 统计

asp.net-mvc-3 ×1

c# ×1

frameworks ×1

javascript ×1

unit-testing ×1

wcf ×1