{"id":7207,"date":"2014-09-09T10:57:50","date_gmt":"2014-09-09T07:57:50","guid":{"rendered":"http:\/\/railsware.com\/blog\/?p=7207"},"modified":"2021-08-16T14:04:55","modified_gmt":"2021-08-16T11:04:55","slug":"make-angularjs-1-0-7-work-with-jasmine-2-0","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/","title":{"rendered":"Make AngularJS 1.0.7 work with Jasmine 2.0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">During setup of <a href=\"http:\/\/jasmine.github.io\/\">Jasmine<\/a> 2.0 for <a href=\"https:\/\/angularjs.org\/\">AngularJS<\/a> 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine &#8211; 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There were two ways to fix this issue:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Upgrade AngularJS to 1.2.x<\/li><li>Fix Jasmine-related stuff in AngularJS 1.0.7<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The first path was reasonable, but required much more efforts than the second one. So, we found a way to make it work for old version of AngularJS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Solution<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To make a fix we need to change only &#8220;src\/ngMock\/angular-mocks.js&#8221; file. It contains all the code responsible for interaction with Jasmine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/gist.github.com\/cris\/11427a86e3396e6bc61b\">This gist<\/a> contains required patch:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:diff toolbar:1 decode:true\">diff --git a\/src\/ngMock\/angular-mocks.js b\/src\/ngMock\/angular-mocks.js\nindex 41217c7..fe09bc6 100644\n--- a\/src\/ngMock\/angular-mocks.js\n+++ b\/src\/ngMock\/angular-mocks.js\n@@ -1635,13 +1635,28 @@ window.jstestdriver &amp;&amp; (function(window) {\n \n \n window.jasmine &amp;&amp; (function(window) {\n+  var currentSpec = null,\n+      isSpecRunning = function() {\n+        return !!currentSpec;\n+      };\n+\n \n-  afterEach(function() {\n-    var spec = getCurrentSpec();\n-    var injector = spec.$injector;\n+  (window.beforeEach || window.setup)(function() {\n+    currentSpec = this;\n+  });\n \n-    spec.$injector = null;\n-    spec.$modules = null;\n+  (window.afterEach || window.teardown)(function() {\n+    var injector = currentSpec.$injector;\n+\n+    angular.forEach(currentSpec.$modules, function(module) {\n+      if (module &amp;&amp; module.$hashKey) {\n+        module.$hashKey = undefined;\n+      }\n+    });\n+\n+    currentSpec.$injector = null;\n+    currentSpec.$modules = null;\n+    currentSpec = null;\n \n     if (injector) {\n       injector.get('$rootElement').unbind();\n@@ -1664,12 +1679,7 @@ window.jasmine &amp;&amp; (function(window) {\n   });\n \n   function getCurrentSpec() {\n-    return jasmine.getEnv().currentSpec;\n-  }\n-\n-  function isSpecRunning() {\n-    var spec = getCurrentSpec();\n-    return spec &amp;&amp; spec.queue.running;\n+    return currentSpec;\n   }\n \n   \/**<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Note that patch works only for &#8220;angular.js&#8221; repository. For your project you should replace all paths &#8220;src\/ngMock\/angular-mocks.js&#8221; with correct path in your repository. For example, in our project it is located in &#8220;spec\/javascripts\/helpers\/angular-mocks.js&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put this gist into file &#8220;patch-angular-mocks.diff&#8221; in the root of your git repository. Fix paths for &#8220;angular-mocks.js&#8221; as noticed above and apply patch with:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted theme:tomorrow-night lang:sh nums:false\">$ git apply patch-angular-mocks.diff\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now it should work with new Jasmine! This patch works also for Angular 1.0.8.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Notice for Jasmine upgrade<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to upgrade Jasmine from 1.x to 2.0, don&#8217;t forget to read about <a href=\"http:\/\/jasmine.github.io\/2.0\/upgrading.html\">breaking changes<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine &#8211; 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this&#8230;<\/p>\n","protected":false},"author":25,"featured_media":9440,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Sergii Boiko"],"class_list":["post-7207","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Sergii Boiko\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-09-09T07:57:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-16T11:04:55+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#article\",\"name\":\"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog\",\"headline\":\"Make AngularJS 1.0.7 work with Jasmine 2.0\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/Make-AngularJS.png\",\"width\":360,\"height\":360,\"caption\":\"Make AngularJS 1.0.7 work with Jasmine 2.0\"},\"datePublished\":\"2014-09-09T10:57:50+03:00\",\"dateModified\":\"2021-08-16T14:04:55+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#listItem\",\"name\":\"Make AngularJS 1.0.7 work with Jasmine 2.0\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#listItem\",\"position\":3,\"name\":\"Make AngularJS 1.0.7 work with Jasmine 2.0\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/\",\"name\":\"Sergii Boiko\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/sergii-boiko-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Sergii Boiko\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/\",\"name\":\"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog\",\"description\":\"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/Make-AngularJS.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#mainImage\",\"width\":360,\"height\":360,\"caption\":\"Make AngularJS 1.0.7 work with Jasmine 2.0\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/make-angularjs-1-0-7-work-with-jasmine-2-0\\\/#mainImage\"},\"datePublished\":\"2014-09-09T10:57:50+03:00\",\"dateModified\":\"2021-08-16T14:04:55+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog","description":"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this","canonical_url":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#article","name":"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog","headline":"Make AngularJS 1.0.7 work with Jasmine 2.0","author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png","width":360,"height":360,"caption":"Make AngularJS 1.0.7 work with Jasmine 2.0"},"datePublished":"2014-09-09T10:57:50+03:00","dateModified":"2021-08-16T14:04:55+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#listItem","name":"Make AngularJS 1.0.7 work with Jasmine 2.0"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#listItem","position":3,"name":"Make AngularJS 1.0.7 work with Jasmine 2.0","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author","url":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/","name":"Sergii Boiko","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/sergii-boiko-96x96.jpg","width":96,"height":96,"caption":"Sergii Boiko"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#webpage","url":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/","name":"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog","description":"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png","@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#mainImage","width":360,"height":360,"caption":"Make AngularJS 1.0.7 work with Jasmine 2.0"},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/#mainImage"},"datePublished":"2014-09-09T10:57:50+03:00","dateModified":"2021-08-16T14:04:55+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Make AngularJS 1.0.7 work with Jasmine 2.0 | Railsware Blog","og:description":"During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine - 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were two ways to fix this","og:url":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png","og:image:width":360,"og:image:height":360,"article:published_time":"2014-09-09T07:57:50+00:00","article:modified_time":"2021-08-16T11:04:55+00:00"},"aioseo_meta_data":{"post_id":"7207","title":null,"description":null,"keywords":[{"label":"javascript,angular,angularjs,bdd,jasmine,tdd","value":"javascript,angular,angularjs,bdd,jasmine,tdd"}],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-63860d1929b7b","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:30","updated":"2025-09-26 11:22:38","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMake AngularJS 1.0.7 work with Jasmine 2.0\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Make AngularJS 1.0.7 work with Jasmine 2.0","link":"https:\/\/railsware.com\/blog\/make-angularjs-1-0-7-work-with-jasmine-2-0\/"}],"reading_time":"2 min read","categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2014\/09\/Make-AngularJS.png","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=7207"}],"version-history":[{"count":19,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7207\/revisions"}],"predecessor-version":[{"id":14121,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7207\/revisions\/14121"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/9440"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=7207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=7207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=7207"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=7207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}