Я пишу интеграционные тесты для привязок purescript FFI с карта API Google.
Код проблемы Google предназначен для внешней загрузки с тегом <script> в браузере, который не загружен и запущен в процессе узла. То, что у меня есть сейчас, загрузит соответствующий файл как gmaps.js, но я не знаю, что делать, чтобы на самом деле запустить файл.
exports.setupApiMap = function() {
require('dotenv').config();
const apiKey = process.env.MAPS_API_KEY;
const gmaps = "https://maps.googleapis.com/maps/api/js?key = " + apiKey;
require('download')(gmaps, "gmaps.js");
// what now???
return;
};
Для моих модульных тестов я должен позже иметь возможность запускать new google.maps.Marker(...). Затем я могу проверить, правильно ли работают мои привязки setTitle, getTitle и т. д.
возможно, вы захотите найти puppeteer для программного запуска браузеров.
@StrangerintheQ Я хотел бы запустить этот тест как часть gitlab CI. Я не думаю, что смогу запустить браузер в gitlab CI. Но TBH, я никогда раньше не использовал насмешку над браузером. Это может быть лучший ответ.
Я имел в виду фиктивное поведение объекта маркера
Модульные тесты были неправильным описанием, это действительно интеграционные тесты. Код, который я тестирую, представляет собой просто привязки FFI purescript, на самом деле он ничего не делает, кроме вызова внешнего javascript. Мне нужно проверить, правильно ли я написал их относительно канонического источника.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это повторяющийся вопрос Вот этот. Правильный код был.
exports.setupApiMap = async function() {
require('dotenv').config();
const apiKey = process.env.MAPS_API_KEY;
const gmaps = "https://maps.googleapis.com/maps/api/js?key = " + apiKey;
await require('download')(gmaps, __dirname);
const google = require('./js');
return;
};
Ключ был в том, чтобы загрузить в __dirname перед использованием require. Тем не менее, мои конкретные варианты использования не работали, поскольку код карты API Google просто не может быть запущен в процессе узла. Его нужно запускать в браузере.
Почему вы не хотите издеваться над этим?