3

ユーザーがファイルをアップロードするシステムを構築しています。分度器を使用してファイルのアップロードをテストすることができましたが、サーバーから未加工のファイルを要求するときに、応答がアップロードされたファイルと同じであることを確認する必要があります。

ユーザーがリンクをクリックしてファイルをダウンロードすると、ファイルに対する通常の GET 要求がトリガーされます。プレーン テキスト ファイルを扱っているため、ダウンロードしたファイルは添付ファイルとして提供されず、代わりにブラウザに表示されます。関連する PHP コードは次のとおりです。

header('Content-Type: text/plain');
header('Content-Length: ' . $file->getSize());
header('Content-Disposition: filename="file.txt"');

$file->openFile('rb')->fpassthru();

2 つの問題があります。

  1. ファイル全体がダウンロードされるまで分度器を待機させるにはどうすればよいですか?
  2. ダウンロードしたファイルとアップロードしたファイルを比較するにはどうすればよいですか?

これが私がこれまでに得たものです:

var path = require('path');

function uploadFile(filename) {
    var absolutPath = path.resolve(__dirname, filename);
    $('input#fileupload').sendKeys(absolutPath);
}

describe('Download', function() {

    it('should be exactly the same as an uploaded text file', function() {
        uploadFile('data/2.txt');

        browser.wait(function() {
            return element(by.id('download-button')).isPresent();
        });

        element(by.id('download-button')).click();

        // Wait until page is loaded
        // Compare uploaded file with downloaded file
    });
});
4

1 に答える 1

1

sendKeys他のほとんどの分度器 API 呼び出しはpromiseを返します。したがって、正しい方法は、uploadFileヘルパー メソッドがその promise を返してthenから、次のステップに進むために使用することです。

私はこれを試していませんが、動作する可能性のあるコードを次に示します。

function uploadFile(filename) {
  var absolutPath = path.resolve(__dirname, filename);
  return $('input#fileupload').sendKeys(absolutPath);
}

describe('Download', function() {

  it('should be exactly the same as an uploaded text file', function() {
    uploadFile('data/2.txt').then(function () {
      // add test code here if you want to
      ...
      element(by.id('download-button')).click().then(function () {
        // now you should be all set to do your test
        ...
    });
  });
});
于 2014-12-30T12:32:34.873 に答える