Integration testing an ASP.NET MVC application

≯℡__Kan透↙ 提交于 2019-12-09 06:06:57

问题


I need some advice about efficient way of writing integration tests for our current ASP.NET MVC application. Our architecture consists of:

  • A Service Layer below Controllers
  • Service Layer uses Repositories and Message Queue (sometimes) to send messages to external applications.

What I think should be done is to:

  • Write behavioral unit tests for all pieces in isolation. So, for example, we should unit test the Service Layer while mocking Repositories and Message Queues.

  • Same goes for Controllers. So we mock the Service Layer and unit test the Controller.

  • Finally, we write separate integration tests for Repositories against a real database and for Message Queue classes against real message queues to ensure they persist/retrieve data successfully.

My Questions:

  • Are there any other types of integration tests that we need to write?

  • Do we still need to write integration tests for Services with the real Repositories and Message Queues?

  • Do we still need to write integration tests for Controllers with the real Services (which in turn consists of real Repositories and Message Queues).

Any advice would be greatly appreciated.

Cheers


回答1:


Here at office we do not test against real services.

  • We have test in service side
  • We are testing controllers as unit tests, we use mock in these unit tests
  • Yet we don't have a integration test :-(

We were advised to not use real services for testing, we use Rhino Mocks to simulate answers for methods being called inside controller actions.

So the problem is still about how to do integration tests in a good way.

Maybe this could help you:

http://www.codeproject.com/Articles/98373/Integration-testing-an-ASP-NET-MVC-application-wit.aspx

but I am still looking for a better understanding about its possibilities.




回答2:


I'm using Ivonna for testing various levels of isolation. I'm able to test that a particular Url with some particular POST data hits the expected Action method with the expected arguments, and at the same time I'm able to stub/mock external services.




回答3:


I've been using SpecsFor.MVC for integration testing. Essentially you write code in a test class and the framework runs a browser interpreting your C# into browser actions. It's beautifully simple to use and setup.



来源:https://stackoverflow.com/questions/5644647/integration-testing-an-asp-net-mvc-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!