Jasmine:要求没有定义

时间:2016-04-17 01:24:44

标签: jasmine angular

我通过以下链接执行了angular2快速启动项目:https://angular.io/guide/quickstart。唯一不同的是我在app.component.ts中添加代码var fs = require('js'),它可以工作。但是,当我为该组件编写Jasmine单元测试时,它会显示require is not defined,是否有人知道如何解决该问题?

注意:

我在整个项目中使用打字稿。

我尝试添加节点类型定义,但它没有修复错误。

这是我的代码: 单元tests.html

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>Ng App Unit Tests</title>
    <link rel="stylesheet" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
    <script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
    <script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
    <script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
    ...
</head>
<body>
<!-- Unit Testing Chapter #1: Proof of life.  -->
<script src="app/app.component.spec.js"></script>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您需要包含SystemJS并导入规范。

类似的东西:

<script src="~/node_modules/systemjs/dist/system.js" type="text/javascript"></script>
<script>  
    System.config({
        baseURL: '/app'
    });
      System.import('app.component.spec')
    .then(null, console.error.bind(console));
</script>

答案 1 :(得分:0)

您的代码缺少此关键字,即所有类成员都需要的打字稿。

将您的组件更改为:

import {Component} from 'angular2/core';

@Component({
    selector: 'my-app',
    template: '<h1>My First Angular 2 App</h1>'
})
export class AppComponent {

  constructor() {
      this.testReq();
  }

  testReq(str: string): string {
    /*  var fs = require('fs');
      var str = '123';
      return str;*/
  }
}

我认为你在这里误解了一些事情。 FS是用于处理文件系统的节点库。当您处于Node过程中时,这种方法非常出色,但在您的示例中,您并非如此。您正在浏览器进程中运行,因此您无权访问任何节点库。