What is the difference between Ninject and a mocking framework like RhinoMocks or Moq? I Google\'d this but it is still unclear.
Ninject is a dependency injection/inversion of control tool. You use this to manage dependencies between classes.
The classic example is if you have something like a service or a data repository. Instead of using a concrete class throughout the application, you can ask the Ninject kernel to get you an instance of an interface. This means you can make multiple concrete classes that implement the interface, and swap them out in a single place. This is extremely useful in testing, but goes far beyond that. Lots of IoC containers, Ninject being no exception, will also do things like manage instance lifecycles and a host of other stuff. Say if you want to use 1 repository per web request, or a single instance of a class, that's the kind of thing Ninject can take care of for you very cleanly.
Moq, RhinoMocks etc are mocking frameworks, they generate fake classes for you to assert that other parts of the application interact with them in the correct way. These are really only useful for testing because the mocked objects don't provide any functionality beyond reporting back on how they were accessed.
You might also want to check out StructureMap - structuremap.net/structuremap - they have some good articles describing the pattern, and also Rob Conery does episodes on IoC - http://www.asp.net/mvc/videos/aspnet-mvc-storefront-part-13-dependency-injection - and on Mocking - http://www.asp.net/mvc/videos/aspnet-mvc-storefront-part-12-mocking - which are a good watch and describe far better than I can what each are about.