我们如何在角度2中编写基本单元测试?

时间:2016-02-26 09:40:36

标签: javascript unit-testing angular

我在官方网站上有以下角度文档。但在文档测试中,部分已过时,无法使用当前的角度2 beta版本。我需要编写一个基本测试来检查if条件是否正常工作。我怎么能用角度2中的茉莉花做到这一点。

3 个答案:

答案 0 :(得分:9)

设置jasmine以使用angular2(beta.7)运行typescript单元测试:

  1. 设置Angular-Project
    (见说明5 Min Quickstart https://angular.io/guide/quickstart

    Rootdir是myproject

  2. 用mpm安装jasmine

    npm install jasmine-core --save-dev --save-exact
    
  3. 安装live-server
    https://www.npmjs.com/package/live-server

  4. 获取语法/智能感知支持:
    在myproject / typings中创建一个新文件jasmine.d.ts

    /// <reference path="jasmine\jasmine.d.ts" /> 
    

    从中获取jasmine.d.ts https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jasmine/jasmine.d.ts

    并将其保存在myproject \ typings \ jasmine中作为文件jasmine.d.ts

  5. 在myproject中保存unit-test.html

    <html>
     <head>
       <title>Angular2: Jasmine 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>
      <!-- #1. add the system.js library -->
      <script src="../node_modules/systemjs/dist/system.src.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/app.spec')
           // #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>
    

    .then(window.onload)对于开始测试非常重要。

    请参阅此处Wait for a module to be loaded to execute the tests it contains

  6. 在dir myproject \ app

    中创建新文件app.spec.ts
    import {AppComponent} from './app.component';
    
    
    // Jasmin Test  App title property
    describe('AppComponent', () => {
        var app: AppComponent = null
    
        beforeEach(() => {
        app = new AppComponent();
        app.title = "App in Test";
        });
    
       it('should have an title property', () => {
    
          expect(app.title).toBeDefined();
       });
    
       it('should have the title App in Test', () => {
    
          expect(app.title).toBe("App in Test");
       })
    });
    
    
    // Jasmin Test without Angular
    describe("A suite", function() {
        it("contains spec with an expectation", function() {
            expect(true).toBe(true);
        });
    });
    
  7. 从cmdline开始

    live-server --open=unit-test.html
    
  8. 这是我用Angular 2编写的带有Jasmine的单元测试的工作设置。

    如果您有任何错误,请发布您尝试过的内容以及Günther在评论中提出的失败位置。

答案 1 :(得分:0)

I found this to be a good guide for angular testing

它缺少以下命令:

typings install jasmine --save-dev --ambient

答案 2 :(得分:0)

现在,角度有关于角度2单位测试和使用茉莉和业力的端到端测试的良好文档。它用例子解释它,非常容易理解和遵循。

参考:angular 2 test