javascript - ¿Es posible crear una "exportación débil" en TypeScript?
Una cosa desafortunada sobre probar código modular es que a veces tienes que exportar cosas solo para probarlas. Esto contamina tu código, y también hace que funciones agradables como las señales de "variable no utilizada" en el compilador o linter sean menos valiosas: si eliminas un uso en tu aplicación, aún puedes tener un uso en tus pruebas.
Una posible solución sería algo así como una "referencia débil", donde el código de prueba se referiría a lo que está probando, pero con una bandera explícita de "linter, compilador: por favor, no cuenten esta referencia como un uso".
Revisé tanto las banderas de tsc como los documentos de configuración de tslint, pero no vi nada. A) ¿me perdí de algo? B) ¿es una buena idea y qué tan difícil sería implementarlo?
(Otras soluciones simplemente no son tan buenas. Por ejemplo, podrías no exportar cosas y luego usar rewire para hacer introspección en el módulo y acceder a cosas privadas. Según tengo entendido, el tsc no podría seguir tal referencia.)
Gracias por tu ayuda.
Respuesta #1
Sepáralos en un módulo diferente y de esa manera puedes probarlo más fácilmente. Supongamos que tienes el siguiente caso de uso.
function a () {/* implementation */}
export function b () {
//... code
a()
//..code
}
si 'a' estaba en un módulo diferente y era requerido por 'b', tu prueba entonces puede requerir directamente ese módulo. También podría ser útil usar inversión de control para las dependencias del módulo ('b'). Esto te permitirá inyectar mocks/espías y probarlo mejor. En nuestro ejemplo a/b debería verse algo así.
import {a} from './a'
export function CreateB(aFunc:a = a){
return function b(){
//..code
aFunc()
//..code
}
}
Si proporcionas un ejemplo más concreto, podría ser capaz de ayudar más.
