Я пытаюсь использовать проверку Parsley для приложения angular2, которое я пишу, и хочу написать несколько тестов жасмина. Я хочу убедиться, что вход проверен правильно.Как написать тест единицы жасмина для моих угловых форм 2, использующих проверку парселя?
Я пытаюсь написать небольшой тест, но я думаю, что проблема заключается в том, что я не могу загружать петрушку. Я запускаю кармического бегуна и пытаюсь включить его в файлы конфигурации для этого.
Это мой тестовый файл:
///<reference path="./../../../../typings/globals/jasmine/index.d.ts"/>
import { Component, DebugElement, AfterViewInit } from "@angular/core";
import { By } from "@angular/platform-browser";
import { ComponentFixture, TestBed, async } from "@angular/core/testing";
import { FormsModule } from '@angular/forms';
import { ComponentFixtureAutoDetect } from '@angular/core/testing';
import { dispatchEvent } from '@angular/platform-browser/testing/browser-util';
declare var jQuery: any;
describe("StringLengthValidationApp",() => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ FormsModule ],
declarations: [StringLengthValidationApp],
providers: [
{ provide: ComponentFixtureAutoDetect, useValue: true }
]
});
});
beforeEach(async(() => {
TestBed.compileComponents();
}));
it("should work",() => {
let fixture = TestBed.createComponent(StringLengthValidationApp);
fixture.detectChanges();
return fixture.whenStable().then(() => {
const inputName = 'quick BROWN fox';
let nameInput = fixture.debugElement.query(By.css('input')).nativeElement;
nameInput.value = inputName;
nameInput.dispatchEvent(new Event('input'));
fixture.detectChanges();
let second = fixture.debugElement.query(By.css('textarea')).nativeElement;
second.value = inputName;
second.dispatchEvent(new Event('input'));
fixture.detectChanges();
console.log(fixture.nativeElement);
let errors = fixture.debugElement.queryAll(By.css("ul"));
expect(errors.length).toBe(1);
});
});
});
@Component({
selector: "date-validation-app",
template: `
<form id="form"
class="form-horizontal form-label-left parsleyjs"
data-parsley-validate=""
data-parsley-priority-enabled="false"
novalidate="novalidate">
<input type="text" id="basic" name="basic" class="form-control"
required="required"
data-parsley-trigger="change"
data-parsley-maxlength="3" />
<textarea name="textarea" rows="10" cols="50">Write something here</textarea>
</form>
`
})
class StringLengthValidationApp {
}
Мои karma.conf.js
var webpackConfig = require('./webpack.test');
module.exports = function (config) {
var _config = {
basePath: '',
frameworks: ['jasmine'],
files: [
{ pattern: './config/karma-test-shim.js', watched: false }
],
preprocessors: {
'./config/karma-test-shim.js': ['webpack', 'sourcemap']
},
webpack: webpackConfig,
webpackMiddleware: {
stats: 'errors-only'
},
webpackServer: {
noInfo: true
},
reporters: ['kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false
};
config.set(_config);
};
И карма-тест-shim.js
Error.stackTraceLimit = Infinity;
require('core-js/es6');
require('core-js/es7/reflect');
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy');
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
require('jquery/src/jquery');
require('parsleyjs/dist/parsley.js');
var appContext = require.context('../src', true, /\.spec\.ts/);
appContext.keys().forEach(appContext);
var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');
testing.TestBed.initTestEnvironment(browser.BrowserDynamicTestingModule, browser.platformBrowserDynamicTesting());
Я получаю сообщение об ошибке, как этот
Uncaught Error: Error in :0:0 caused by: form.parsley is not a function
TypeError: form.parsley is not a function
Когда не работает с функцией ngAfterViewInit пытается связать петрушку, он будет работать, но я получить тест с ошибкой
Error: Expected 0 to be 1.
И при взгляде на него в Chrome не ошибка проверки не видно либо.
Мое подозрение, что петрушка не запускается, но я новичок в этом, так что я думаю, я могу быть сделаны какие-либо простую ошибку или что это может быть что-нибудь еще, что это неправильно
Любые намеки на то, что сделать, чтобы решить ее будет очень ценится
Я думаю, что я решили проблему, просто добавив 'node_modules/parsleyjs/dist/parsley.js', в раздел файлов в моем файле karma.conf.js – lidholm