ng2-dragula を含むコンポーネントで単体テストを実行したいと考えています。
ただし、コンポーネントで単純な単体テストを実行すると、エラーが発生します
TypeError: 未定義のプロパティ 'setOptions' を読み取れません
component.html
<div [dragula]="'section-bag'"
[dragulaModel]='form.sections'>
<div *ngFor="let section of form.sections">
<div class="drag-handle__section"></div>
</div>
</div>
component.ts
import { Component, Input } from '@angular/core';
import { DragulaService } from 'ng2-dragula';
...
export class MyComponent {
@Input() form;
constructor(private dragulaService: DragulaService) {
dragulaService.setOptions('section-bag', {
moves: (el, container, handle) => {
return handle.classList.contains('drag-handle__section');
}
});
}
...
}
component.spec.ts
import { DragulaService } from 'ng2-dragula';
...
describe('Test for MyComponent', () => {
let comp: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ],
providers: [
{ provide: DragulaService }
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
comp = fixture.componentInstance;
comp.form.sections = [];
comp.form.sections.push(new FormSection());
fixture.detectChanges();
});
it('should create', () => {
expect(comp).toBeTruthy();
});
});
Dragula が正しくインポートされていないと思いますが、Dragula をコンポーネントのコンストラクターで使用するためにテストでプロバイダーとして追加するにはどうすればよいですか?
私はAngular2 単体テストを見てきました: 関連していると思われるコンポーネントのコンストラクターをテストしていますが、エラーを解決できません。
注: 私は、Dragula の単体テストについてはあまり気にしていません。コンポーネントの他の機能をテストしたいのですが、このエラーによりそれ以上のテストを実行できません。