2016-11-18 5 views
1

Ich versuche, eine Beispielanwendung in Angular 2 einzurichten, gerade versuche ich, den e2e-Testteil zu testen. Ich habe wenig Wissen über das Jasmine-Framework oder die Winkelmesser-Bibliothek, die Angular 2 verwendet.E2E-Test fehlgeschlagen

Also ich bin nicht sicher, warum ich immer diese Fehlermeldung, wenn ich ng e2e laufen (I Angular CLI bin mit)

Der Fehler erhalte ich:

[09:41:10] I/direct - Using ChromeDriver directly... 
[09:41:10] I/launcher - Running 1 instances of WebDriver 
[09:41:12] E/launcher - Error: TSError: ? Unable to compile TypeScript 
e2e\app.e2e-spec.ts (16,4): Cannot find name 'browser'. (2304) 
e2e\app.e2e-spec.ts (17,19): Cannot find name 'element'. (2304) 
e2e\app.e2e-spec.ts (17,27): Cannot find name 'by'. (2304) 
e2e\app.e2e-spec.ts (18,5): Supplied parameters do not match any signature of ca 
ll target. (2346) 

Mein Testfall (app.e2e- spec.ts)

import { WebPage } from './app.po'; 

describe('web App', function() { 
    let page: WebPage; 

    beforeEach(() => { 
    page = new WebPage(); 
    }); 

    it('should display message saying app works',() => { 
    page.navigateTo(); 
    expect(page.getParagraphText()).toEqual('Hello World'); 
    }); 

    it('Has a greeting', function() { 
    browser.get('/index.html'); 
    var greeting = element(by.id('h2Id')); 
    expect().getText(greeting).toEqual('Hello, World!'); 
    }); 


}); 

Protrator.config.js

// Protractor configuration file, see link for more information 
// https://github.com/angular/protractor/blob/master/docs/referenceConf.js 

/*global jasmine */ 
var SpecReporter = require('jasmine-spec-reporter'); 

exports.config = { 
    allScriptsTimeout: 11000, 
    specs: [ 
    './e2e/**/*.e2e-spec.ts' 
    ], 
    capabilities: { 
    'browserName': 'chrome' 
    }, 
    directConnect: true, 
    baseUrl: 'http://localhost:4200/', 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 30000, 
    print: function() {} 
    }, 
    useAllAngular2AppRoots: true, 
    beforeLaunch: function() { 
    require('ts-node').register({ 
     project: 'e2e' 
    }); 
    }, 
    onPrepare: function() { 
    jasmine.getEnv().addReporter(new SpecReporter()); 
    } 
}; 
+1

'import {browser, Element, durch} von 'Winkelmesser';' Beachten Sie, dass Sie in der Regel diese in einem * Seite Objekt * haben würden (siehe zB [ 'app.po.ts'] (https://github.com/textbook/known-for-web/blob/master/e2e/pages/app.po.ts)), die das Geschäft der tatsächlichen Interaktion mit dem DOM aus dem Test abstrahiert und eine benutzerfreundlichere API verfügbar macht Machen Sie Ihre Tests lesbarer (zB ['app.e2e-spec.ts'] (https://github.com/textbook/known-for-web/blob/master/e2e/app.e2e-spects)) - Der Unterschied zwischen 'page.getGreetingText()' und 'element (by.id ('h2Id')). getText()', in Ihrem Beispiel. So macht es das CLI. – jonrsharpe

+0

Ich sehe, es scheint zu funktionieren, ich nahm an, CLI importiert implizit die Bibliothek, danke für Ihre Antwort – Snedden27

+0

Die CLI enthält diese Importe in der automatisch generierten '.po'-Datei, wo erwartet wird, dass Sie mit der interagieren Browser und spezifische Elemente, nicht in der '.e2e-spec' Datei, wo Sie nicht sind. – jonrsharpe

Antwort

0

app.e2e-spec.ts:

expect(). GetText (Begrüßung) .toEqual ('Hallo, Welt!');

=> expect(greeting.getText()).toEqual('Hello, World!'); 
+0

bitte erklären Sie Ihre Antwort! – Mazz

+0

Willkommen bei StackOverflow. Bitte sehen Sie hier [wie man den Code formatiert] (https://stackoverflow.com/editing-help) –

Verwandte Themen