Obtener nombre de la variable del argumento de la función de Manuscrito

0

Pregunta

Me gustaría establecer una rápida y sencilla manera de funciones de prueba en Angular donde me acaba de introducir el nombre de funciones una vez en el constructor y prueba de ellos. por ejemplo:

constructor() {
    this.test(this.FucntionName)  <= logs function name and output
  }

El problema con esto es que si intento pasar una función como un argumento sin llamar, me sale una esta. ámbito de error. ¿Cómo puedo obtener el nombre de la función y su valor de retorno cuando me pase a la función test (), sin tener que escribir dos argumentos?

Existe una mejor opción, tal vez algunos marcos de pruebas de unidad de proporcionar esta?

Mi enfoque actual de las obras, pero es torpe y me gustaría eliminar la necesidad de que el segundo argumento:

export class AuthService {
  constructor(
    ...
  ) {
    this.test(this.FunctionName(), 'FunctionName')// I would like to remove the need to repeat the name as string
  }

  test(sub: any, name) {
    sub.subscribe(
      data => {
        console.group("==========", name, "()    TEST  ===============")
        console.log("Output Type:", typeof data)
        typeof data == 'object' ? console.table(data) : console.log(data);
        console.groupEnd()
      }
    )
  }
angular typescript
2021-11-24 01:30:50
2

Mejor respuesta

1

La forma más fiable sería para pasar la cadena, a continuación, utilizar la notación de corchetes para buscar en this. El uso de un campo de la clase de función de flecha para el this el contexto es correcta.

test = (methodName) {
    this[methodName]().subscribe(
        data => {
            console.group("==========", methodName, "()    TEST  ===============")
            // ...
2021-11-24 01:35:55
0

Usted puede escribir algo como la siguiente (la ampliación de la respuesta de @CertainPerformance)

export class AuthService {
  constructor(
    ...
  ) {
    this.test('FunctionName')
  }

  test(name) {
    this[name]().subscribe(
      data => {
        console.group("==========", name, "()    TEST  ===============")
        console.log("Output Type:", typeof data)
        typeof data == 'object' ? console.table(data) : console.log(data);
        console.groupEnd()
      }
    )
  }
2021-11-25 08:11:59

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................