Is this approach correct when testing an Angular controller?
It doesn't look to me like proper Unit test.
You are injecting the real dependency but are not mocking.
Unit test is about testing your single Unit of functionality in isolation, with all it dependencies mocked.

Here is example from of my own test code.
This is a proper mock - I am producing a fake Constant:

beforeEach(module(function($provide) {
  $provide.constant('hotelsArray', [{i: 1, n: 'h1'}, {i: 2, n: 'h2'}, {n: 'h3'}, "11"]);
}));


And this is injecting the actual Service:

beforeEach(inject(function(_Hotels_) {
  Hotels = _Hotels_;
}));