私はあなたのコメントに返信するつもりだったが、私は次のようにファイルfile-drop.directive.spec.tsから自分のユニットテストから取らFileUploaderクラスをモックする方法についてのあなたの元の質問に答えるために役立つかもしれないと思う:
import { Component } from '@angular/core';
import { inject, ComponentFixture, TestBed } from '@angular/core/testing';
import { FileUploader } from './file-uploader.class';
import { FileUploadModule } from './file-upload.module';
@Component({
selector: 'container',
template: `<input type="file" ng2FileSelect [uploader]="uploader" />`
})
export class ContainerComponent {
public uploader:FileUploader = new FileUploader({url: 'localhost:3000'});
}
describe('Directive: FileSelectDirective',() => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [FileUploadModule],
declarations: [ContainerComponent],
providers: [ContainerComponent]
});
});
it('should be fine', inject([ContainerComponent], (fixture:ComponentFixture<ContainerComponent>) => {
expect(fixture).not.toBeNull();
}));
});
ここで、import { FileUploader } from './file-uploader.class';
はFileUploaderをテストにインポートする方法です。ContainerComponent
はテスト自体にインポートされます。
さらに、私は自分のコンポーネントでテストするためのダミーファイルを作成しましたが、私はまだそれを書いています!
it('should accept a file for upload',() => {
var modifiedDate = new Date();
var file = new File([3555], 'test-file.jpg', {lastModified : modifiedDate, type: 'image/jpeg'});
FileUploadComponent.upload(file);
});
これが機能するかどうかをテストするには、ファイルが選択されたときにデータが入力されると予想されるメタデータモデルがあります。したがって、私は2つのアサーションを行うことができます。つまり、アップロード入力ボックスにファイルがあり、メタデータオブジェクトが読み込まれるということです。
ng2-file-uploadの場合、ファイルリストが作成され、テストファイルがインポートされたことを確認できます。
幸運を祈る!
ビルドしたファイルアップロードコンポーネントと同じ問題があり、このhttps://www.noppanit.com/javascript-tdd-on-file-upload/を仕様に移植しようとしています。 ts。私はあなたがジャスミンのためのタイピングを持っている場合にのみ、spyOnが利用可能であることを別のリソースで見てきました。それを設定する過程で。私はあなたの投稿を残しておきます(私はspyOnが解決策だと思います)。 –
@TerryBarriffありがとう。また、ng2-file-upload FileUploader関数のいくつかをオーバーライドして以来、問題をテストしています。これに関するアイデアはありますか? – xiotee
あなたは私の答えをチェックしましたか?それは助けてくれましたか? –