Unit testing, as its name implies, is testing of individual software "units," most commonly methods. If you can fabricate a test that calls a single method and returns a predictable result (without involving loads of other code in other modules, for which the term "integration test" is more appropriate), it is a unit test.
In the case of an MVC controller, typically that method gets called with zero or more parameters, and returns some kind of object (in ASP.NET MVC, it returns a view). So if you have some correct result object that you can compare to your return object, you have a unit test.
In practice, controllers are not typically tested this way. Instead, program logic is pushed out of the controllers into a business logic layer or into the model. The controllers are then made as thin as possible, so that they are merely calling other methods that are already tested elsewhere.
Controllers should really be regarded as a "patch bay," receiving incoming POST and GET requests, and "routing" them to the appropriate program logic for processing.