Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的Jasmine规范认为我的角度模块没有定义_Javascript_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

Javascript 为什么我的Jasmine规范认为我的角度模块没有定义

Javascript 为什么我的Jasmine规范认为我的角度模块没有定义,javascript,angularjs,unit-testing,jasmine,Javascript,Angularjs,Unit Testing,Jasmine,为什么我的Jasmine规范认为我的角度模块没有定义?我在实际模块代码下面添加了一行代码,将布尔值设置为true,然后我在规范中记录它,它表示true。我也尝试过改变模块,使其不是超范围(我的术语)或iLife,但没有效果。错误消息的要点是预期未定义为等于。 规格跑步者: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset

为什么我的Jasmine规范认为我的角度模块没有定义?我在实际模块代码下面添加了一行代码,将布尔值设置为true,然后我在规范中记录它,它表示true。我也尝试过改变模块,使其不是超范围(我的术语)或iLife,但没有效果。错误消息的要点是
预期未定义为等于。

规格跑步者:

<!DOCTYPE HTML>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Angular Spec Runner</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.4.1/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="lib/jasmine-2.4.1/jasmine.css">

  <script type="text/javascript" src="lib/jasmine-2.4.1/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.4.1/jasmine-html.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.4.1/boot.js"></script>

  <script type="text/javascript" src="../../bower_components/angular/angular.min.js"></script>
  <script type="text/javascript" src="https://code.angularjs.org/1.5.2/angular-mocks.js"></script>

  <!-- include source files here... -->
  <script type="text/javascript" src="../services/common/common.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="specs/commonSpec.js"></script>
</head>

<body>
</body>

</html>
规格:

这个错误

TypeError:无法读取未定义的属性“be”

很明显,这段代码中有错误

expect(common).to.be.a('Object');
而不是在
公共服务中

这是因为代码是从使用Chai框架进行断言而不是Jasmine的规范粘贴的,这两个规范有不同的api。Chai语法使用点分隔符,Jasmine方法使用驼峰大小写

Jasmine提供了简单的API,该规范应该

expect(common).toEqual(jasmine.any(Object));
common
变量在静默状态下变为
undefined
的唯一情况是
common
服务被意外覆盖以返回
undefined
。在任何其他情况下,都会抛出注入错误

规范中的注入错误


错误:[$injector:unpr]未知提供程序:loggerProvider Ok my bad。但是,
common
仍然在每个
块之前的第二个
块中显示为未定义。事实上,我甚至不认为该块正在被执行,我已经尝试将
debugger
和/或
console.log
放在该块中,而语句不会执行。每次之前的第二个
是否仍然有效?jasmine API对您来说可能很简单,但再次强调,这是我第一次接触它,我正在尝试将它与Angular to boot集成。欢迎提供进一步指导。是的,在每次
之前第二次
是合适的。如果服务注入出现问题,它不仅会无声地失败,还会抛出一个特定的错误,因此可以很容易地跟踪问题。如果没有错误,
common
应等于实际服务值。代码被截断,不显示工厂返回的
common
内容。如果它没有返回任何内容,它将是
未定义的
。有一个
返回服务
语句,我已经使用了两个月没有问题了。仍然
common
在每个
之前的第二个
之后未定义:(在将一行代码发送给您发送给我的代码之后,我得到了一个不同的错误——请参见上面的修改。
expect
仍然应该在
it
块中,就像在原始代码中一样。如果这是您以前尝试过的,这就是为什么
beforeach
块没有运行的原因-它在每个
it
spec之前运行的原因。)如果没有,d就不会运行。我看不出有任何有效的理由可以在这里定义
common
。如果Plunker上仍然存在问题,我建议在Plunker上复制该问题。还要注意,
angular Mock
应该在Jasmine和angular之后加载。我认为各种文件的加载顺序是正确的。我将
expect
放回
it
中,现在得到这个错误:“Expected undefined to equal。”
common
在每个
之前的第二个
中被认为是未定义的。我想我将修改我的问题,以包括一个完整的服务,其中除一种方法外,我删除了所有内容。感谢您继续提供帮助。
expect(common).to.be.a('Object');
expect(common).toEqual(jasmine.any(Object));
beforeEach(module('loggerModuleName', 'toasterModuleName', 'common'));
var commonModule = angular.module('common', ['loggerModuleName', 'toasterModuleName']);