Хорошо, я нашел решение.
Получил подсказки здесь .
Итак, дело в том, чтобы добавить инъекцию rootScope. Это сработало после этого! :)
beforeEach(inject(function($injector) {
service = $injector.get(
'service');
$httpBackend = $injector.get('$httpBackend');
$rootScope = $injector.get('$rootScope');
}));
it('should use the rejection handler if varB is in invalid format',
function() {
var successHandler = jasmine.createSpy('success');
var failHandler = jasmine.createSpy('fail');
service.func('abc').then(successHandler, failHandler);
$rootScope.$digest();
expect(successHandler).not.toHaveBeenCalled();
expect(failHandler).toHaveBeenCalledWith('varB has to be a number');
}
);
Что касается каждого языка, я полагаю, что существует три взаимосвязанных уровня знаний:
<час> Так, мой ответ на Ваш обновленный вопрос был бы: знайте свой язык, знайте свою платформу, знайте свой домен. Я думаю, что существует достаточно работы отдельно здесь, особенно в C++. Это - работа evergoing, которая никогда не должна пропускаться.
технологии необходимо знать как программист на C++ (и поэтому более технически хорошо осведомленный, чем меньшие программисты ;)):
проблемы производительности - что заставляет вещи не торопиться, как найти и устранить такие проблемы. Я также подразумеваю, что материал как контекстное переключение, строки кэша, оптимизировал поиски, использование памяти и ограничения и подобный материал, о котором не заботится Ваш средний разработчик VB/C#.
проблемы поточной обработки - как получить максимум от многопоточного приложения, как обнаружить и зафиксировать злоупотребления тем же.
связь низкого уровня - особенно способность соединиться с неясными системами, что никто еще не записал инструментарий для (особенно радио comms), задержка и управление пропускной способностью.
Иначе, для определенных инструментов - это зависит от того, для чего Вы нацелены, Windows dev будет отличаться от Linux, будет отличаться от встроенного.
Разработчик C++ имеет к станд. grok и повышение библиотеки.
Список других технологий в основном зависит от типа проекта. Наверняка у Вас будет некоторое взаимодействие с Так, таким образом, необходимо будет знать API среды.
Что касается доступа к данным и других материалов там тонны для различных решений. C++ намного более богат, чем некоторые управляли langs в этом смысле. 99% старых популярных систем имеют интерфейс C/C++.
после разъяснения вопроса немного в комментарии к моему ответу, который я могу рекомендовать:
Это будет в основном зависеть от используемой платформы и других ограничений. Как правило польза (C++) программист (или должен быть) способный изучить определенный для платформы API в очень короткое время. Для C++ намного более важно понять различные наборы инструментальных средств (например, программист Windows должен также знать набор инструментальных средств GCC), и различия в компиляторах. Программист должен также понять ограничения и поведение платформы-dependend языка.
Что касается библиотек, программисты на C++ абсолютно должны знать STL и Повышение. Никакое обсуждение.
при использовании gcc, необходимо определенно знать gdb. На самом деле необходимо быть опытными с локальным отладчиком для того, какой бы ни компилятор Вы используете. Кроме этого существует такой широкий спектр библиотек, использовал ту способность быстро взять API, более полезно, чем кто-либо определенный. Я предложил бы изучить doxygen все же.
Ни в каком определенном порядке
Помимо материала все перечислили, имейте в виду, что у программиста на C++ есть пространство на рынке встроенных систем (намного больше, чем большинство других высокоуровневых языков).So знакомство со встроенными системами, и разработка может открыть много дверей и вакансий, где Вы не будете конкурировать так в большой степени с разработкой Java, например. Так обучение кодировать компактный код (компактный, после того, как скомпилировано) и низкие методы использования памяти является хорошей ставкой.
При использовании Linux затем , Valgrind является очень полезным инструментом для проверки, как программа имеет дело с доступом к памяти.
Популярный способ использовать C++ в мобильном пространстве включил бы изучение Symbian разработка ОС.