2016-04-17 3 views
2

Я сделал angular2 быстрый запуск проекта по этой ссылке: https://angular.io/guide/quickstart. Единственное отличие - я добавляю код var fs = require('js') в app.component.ts, он работает. Но когда я пишу Jasmine unit test для этого компонента, он показывает 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> 
+0

Пожалуйста, разместите код для вашего spec runner? - Я предполагаю, что вы используете specrunner.html ... – KnowHoper

+0

Это то же самое, что и unit-tests.html на веб-сайте, см. Код в моем вопросе. –

ответ

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> 
+0

Да, да. Это тоже не работает. –

+0

Можете ли вы разместить свой код компонента? Я создам планку для вас – KnowHoper

+0

Вот мой плунж: http://plnkr.co/edit/zmmOQSZcRgpbIyifRKxx?p=preview По какой-то причине это не работает. Но в моем приложении у меня такой же код, он работает, он работает не только при тестировании. –

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 - это библиотека узлов для работы с файловой системой. Это работает блестяще, когда вы находитесь в процессе узла, но в вашем примере это не так. Вы работаете в браузере, поэтому у вас нет доступа к любой из библиотек узлов.

+0

Конечно, у меня больше кода, чем выше, например, я использовал fs для чтения файлов внутри функции testReq (они действительно работают в моем приложении, просто не работают в тестировании Jasmine). В этом примере я просто упростил код, чтобы вы знали, где мне нужно fs. –

Смежные вопросы