ng-file-uploadを使用してファイルをアップロードしているときに、キャンセルが機能するかどうかを (分度器を使用して) テストしたいと思います。ただし、アップロード中はアサーションとアクションは評価されず、アップロードが完了した後にのみテストが失敗します。これは、アサーションがアップロード後にのみ評価されるステータス == アップロードのようなものを期待しているのに対し、ステータス == 完了を期待しているためです。
私が使用しているバージョン:
"ng-file-upload": "~10.0.2",
"angular": "~1.4.2",
"gulp-protractor": "~1.0.0"
ファイルのアップロード中にブラウザ ウィンドウが一時的にぼやける (そう思われる) のをどのように克服できますか?
これは私が得た距離です:
html:
<div class="btn btn-default" ngf-select ngf-reset-on-click="false" ng-model="upload.file" name="file" id="file" ngf-pattern="application/zip" accept="application/zip">
{{upload.file.name || 'Select location...'}}
</div>
<button class="btn btn-primary" ng-click="upload.upload(upload.file)" ng-disabled="upload.status === 'loading' || !upload.file">
{{upload.status === 'loading' ? 'Uploading...' : 'Upload'}}
</button>
<a ng-click="upload.abort()" class="cancel" ng-class="{'disabled': upload.status !== 'loading'}">Cancel</a>
ページ オブジェクト:
this.uploadButton = element(by.buttonText('Upload'));
this.cancelButton = element(by.css('.cancel'));
this.selectButton = element.all(by.css('[ngf-select]')).get(0);
this.fileInput = element(by.css('input[type="file"]'));
ジャスミン:
it('aborts an upload', function() {
var fileToUpload = './valid.zip';
var uploadFilePath = path.resolve(__dirname, fileToUpload);
page.fileInput.sendKeys(uploadFilePath).then(() => {
expect(page.selectButton.getText()).toBe('valid.zip');
expect(page.uploadButton.isEnabled()).toBe(true);
expect(page.cancelButton.getAttribute('class')).toBe('cancel disabled');
// Upload the file
page.uploadButton.click().then(() => {
//expect(page.cancelButton.getAttribute('class')).toBe('cancel');
//page.cancelButton.click().then(() => {
expect(page.cancelButton.getAttribute('class')).toBe('cancel disabled');
//});
});
});
});
コメント行で検証します。ブラウザー (クロム) では、手動で無効なクラスがボタンから削除されていることは明らかですが、ファイルのアップロード中に何らかの理由で検証できません。
いくつかの最適化(特にページオブジェクト)を使用できますが、タイムアウトを受け取る理由を説明しているとは思いませんか?