@@ -915,52 +915,69 @@ describe('ngMock', function() {
915
915
} ) . toThrow ( 'test message' ) ;
916
916
} ) ) ;
917
917
918
- describe ( 'when called outside of test spec context and inject callback throws an Error' , function ( ) {
919
- // - IE9 does not support providing stack traces
920
- // - Chrome & Firefox give us the stack trace as soon as an Error is
921
- // created
922
- // - IE10, IE11 & PhantomJS give us the stack trace only once the error
923
- // is thrown
924
- var stackTraceSupported = ( function ( ) {
925
- var error = new Error ( ) ;
926
- if ( error . stack )
927
- return error . stack ;
928
- try {
929
- throw error ;
930
- } catch ( e ) {
931
- return e . stack ;
932
- }
933
- } ) ( ) ;
918
+ // - IE9 does not support providing stack traces
919
+ // - Chrome & Firefox give us the stack trace as soon as an Error is
920
+ // created
921
+ // - IE10, IE11 & PhantomJS give us the stack trace only once the error is
922
+ // thrown
923
+ var stackTraceSupported = ( function ( ) {
924
+ var error = new Error ( ) ;
925
+ if ( error . stack )
926
+ return error . stack ;
927
+ try {
928
+ throw error ;
929
+ } catch ( e ) {
930
+ return e . stack ;
931
+ }
932
+ } ) ( ) ;
934
933
935
- function testCaller ( ) {
934
+ function testInjectCaller ( ) {
935
+ var shouldThrow ;
936
+ var injectingCall = ( function internalInjectCaller ( ) {
936
937
return inject ( function ( ) {
937
- throw new Error ( ) ;
938
- } ) ;
939
- }
940
- var throwErrorFromInjectCallback = testCaller ( ) ;
941
-
942
- if ( stackTraceSupported ) {
943
- describe ( 'on browsers supporting stack traces' , function ( ) {
944
- it ( 'should update thrown Error stack with inject call location' , function ( ) {
945
- try {
946
- throwErrorFromInjectCallback ( ) ;
947
- } catch ( e ) {
948
- expect ( e . stack ) . toMatch ( 'testCaller' ) ;
949
- }
950
- } ) ;
938
+ if ( shouldThrow )
939
+ throw new Error ( ) ;
951
940
} ) ;
952
- } else {
953
- describe ( 'on browsers not supporting stack traces' , function ( ) {
954
- it ( 'should not add stack trace information to thrown Error' , function ( ) {
941
+ } ) ( ) ;
942
+ injectingCall . setThrow = function ( value ) {
943
+ shouldThrow = value ;
944
+ } ;
945
+ return injectingCall ;
946
+ }
947
+
948
+ if ( ! stackTraceSupported ) {
949
+ describe ( 'on browsers not supporting stack traces' , function ( ) {
950
+ describe ( 'when called outside of test spec context' , function ( ) {
951
+ var injectingCall = testInjectCaller ( ) ;
952
+
953
+ it ( 'should not add stack trace information to thrown injection Error' , function ( ) {
954
+ injectingCall . setThrow ( true ) ;
955
955
try {
956
- throwErrorFromInjectCallback ( ) ;
956
+ injectingCall ( ) ;
957
957
} catch ( e ) {
958
958
expect ( e . stack ) . not . toBeDefined ( ) ;
959
959
}
960
960
} ) ;
961
961
} ) ;
962
- }
963
- } ) ;
962
+ } ) ;
963
+ }
964
+
965
+ if ( stackTraceSupported ) {
966
+ describe ( 'on browsers supporting stack traces' , function ( ) {
967
+ describe ( 'when called outside of test spec context and injecting throws an Error' , function ( ) {
968
+ var throwingInjectingCall = testInjectCaller ( ) ;
969
+ throwingInjectingCall . setThrow ( true ) ;
970
+
971
+ it ( 'should update thrown Error stack with inject call location' , function ( ) {
972
+ try {
973
+ throwingInjectingCall ( ) ;
974
+ } catch ( e ) {
975
+ expect ( e . stack ) . toMatch ( 'testInjectCaller' ) ;
976
+ }
977
+ } ) ;
978
+ } ) ;
979
+ } ) ;
980
+ }
964
981
} ) ;
965
982
} ) ;
966
983
0 commit comments