Os módulos que quero testar e/ou simular usam algumas variáveis globais.
Por exemplo, o código-fonte do módulo faz referência a uma variável session
, que não está definida em nenhum lugar, mas está disponível em tempo de execução.
Considere o módulo globals.js
:
let globals = {
contextName: "DATA_PIPELINE",
reportContext: "report",
session: session
};
module.exports = globals;
session
não está definido neste arquivo, mas está disponível em tempo de execução. É uma variável global do ambiente (não está sob meu controle).
Percebo que com temporizadores falsos, você conseguiu substituir a implementação de funções globais como setTimeout. Como poderíamos aplicar isso a qualquer função/objeto global?
Talvez sinon.replace(object, prop, replacement)
seja o que você está procurando?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement
Estamos tentando manter a lista de problemas do GitHub organizada e focada em bugs e discussões de recursos. Este ticket parece uma pergunta de uso; poste-o no StackOverflow e marque-o com sinon
, para que a comunidade maior possa ajudar a responder às suas perguntas.
No Node.js, você pode fazer algo como:
global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests