Now I want to develop a web application using ASP.NET MVC on an existing database and I'm aiming high testability. [..]Can you suggest an architecture for this case including generic repository, unit of work patterns and dependency injection?
This is almost an oxymoron. If you already have a db you have a problem since everything would be driven by the existing db schema instead of the actual use cases. Technically what you want is to rewrite an app in order to be testable but I think you mean maintainable while keeping the existing data.
It does matter how simple or complex your app needs are. If it's a CRUD app i.e you take data from user ,validate it then put in the db then do some queries then things are pretty easy.
You take each use case (add data, get data by criteria etc) and write a test for it. You don't need repositories, unit of work etc. You can use EF directly (if you really want to use an ORM in the first place). Don't worry about mocking things, your app is no more that an UI for the db, you can test things directly with EF with a database.
If CRUD then KISS. You don't need an architecture, don't waste your time and don't complicate your life.
If your app models business objects (which are more than just validators, they represent concepts and domain processes), it's something that evolves in time, it uses a business specific language, then it's a different story.
However, it will be way to broad for this post (and honestly I highly doubt it you have this kind of app) because it would mean to go the DDD route, which means you have to understand a lot of concepts and patterns before writing any code.