实例化类时,Jasmine会中断

时间:2016-08-16 14:46:39

标签: unit-testing angular jasmine

我正在尝试使用Jasmine为Angular 2应用编写测试。接下来的几个教程,尝试了很多。它适用于基本测试,但是一旦我创建了一个组件的实例或试图模拟它,我就没有得到测试结果。根据{{​​3}}它是'那是茉莉说“事情太糟糕了,我没有进行任何测试。”

奇怪的是,BlobViewModel确实有效。每当我评论或删除'this.const = new Constants();'它又有效了。试过多个类,总是得到相同的结果..没有chrome中的日志/错误。

我们将Angular RC4与Jasmine 2.4.1一起使用。 这是我的.spec文件:

import {Component, OnInit, OnDestroy } from "@angular/core";
import {Router} from '@angular/router';

import { Constants } from './shared/app.constants';

describe('component test', () => {
     beforeEach(function () {
        this.const = new Constants(); // THIS BREAKS IT
    });
    it('Tests', () => {
        //Tests come here
        //this.const.Signalr();
    });
});

describe('1st tests', () => {
    it('true is true', () => expect(true).toEqual(true));});

describe('BlobViewModel', () => {
    var id = 1;
    var localhost = "http//localhost";
    var fullpath = "http//fullpathtoapplication.com";
    var printername = "Printy print";
    var papersize = "A4";
    var blobmodel = new BlobViewModel(id, localhost, fullpath, printername, papersize);
    it('BlobviewModel aanmaken', () => {
        expect(blobmodel.ID).toEqual(id);
        expect(blobmodel.FullLocalUrl).toEqual(localhost);
        expect(blobmodel.FullPath).toEqual(fullpath);
        expect(blobmodel.PrinterName).toEqual(printername);
        expect(blobmodel.PaperSize).toEqual(papersize);
    });
});

.spec runner的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="../js/jasmine-core/lib/jasmine-core/jasmine.css">
    <script src="../js/jasmine-core/lib/jasmine-core/jasmine.js"></script>
    <script src="../js/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
    <script src="../js/jasmine-core/lib/jasmine-core/boot.js"></script>


</head>
<body>
    <!-- #1. add the system.js library -->
    <script src="../js/systemjs/dist/system.src.js"></script>
    <script src="../app/Systemjs.config.js"></script>

    <script>
        // #2. Configure systemjs to use the .js extension
        //     for imports from the app folder
        System.config({
            packages: {
                '../app': { defaultExtension: 'js' }
            }
        });

        // #3. Import the spec file explicitly
        System.import('../app/file.spec.js')

      // #4. wait for all imports to load ...
      //     then re-execute `window.onload` which
      //     triggers the Jasmine test-runner start
      //     or explain what went wrong.
      .then(window.onload)
      .catch(console.error.bind(console));
    </script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

最后我想出来了,不得不导入&#34;反射元数据&#34;包装在html文件中:

 <script src="../js/reflect-metadata/Reflect.js"></script>