Я хочуфункция Асинхронный зависит от внешнего модуля в тесте транспортир
- сохранить файл изображения, который находится в удаленном веб-сервере, и
- загрузить его на другой сервер
в испытании проталкивателя.
// depend on a external module
var fs = require('fs');
// save remote file(url) to local(dest)
var download = function (url, dest) {
// let this function be async
browser.executeAsyncScript(function (url, dest, done) {
var file = fs.createWriteStream(dest);
var request = http.get(url, function (response) {
response.pipe(file);
file.on('finish', function() {
file.close(done);
});
});
}, url, dest);
};
describe('', function() {
it('', function() {
browser.get('http://...');
download('http://.../foo.jpg', 'foo.jpg'); /*** DOESN'T WORK! ***/
var absolutePath = path.resolve(__dirname, 'foo.jpg');
$('input[type=file]').sendKeys(absolutePath);
$('#uploadButton').click();
...
, но это не работает:
Stacktrace:
UnknownError: javascript error: fs is not defined
Когда я поставил var fs = require('fs');
в download
функции, сообщение об ошибке ниже:
Stacktrace:
UnknownError: javascript error: require is not defined
Выходя на конечности здесь но транспортир тесты запускаются в браузере? Или в узле? Потому что, если они запускаются в браузере, это объясняет, почему 'require' не работает. – Jackson
@Jackson Цитата из [страницы транспортира github] (https://github.com/angular/protractor#protractor-): 'Транспортир - это сквозная тестовая платформа для приложений AngularJS. Транспортир - это программа Node.js, построенная поверх WebDriverJS. ' – nilsK
@weed, возможно, вам нужно будет потребовать ваш файл из другого каталога, например: «var fs = require ('../ fs');' - в зависимости от настройки вашего проекта. – nilsK