Ottenere un nome di variabile di argomenti della funzione Dattiloscritto

0

Domanda

Vorrei impostare un sistema semplice e veloce per testare le funzioni di un angolo in cui vorrei solo inserire il nome di funzioni di una volta nel costruttore e testare. ad esempio:

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

Il problema con questo è che se provo a passare una funzione come argomento senza chiamare, ho un questo. ambito di errore. Come posso ottenere il nome della funzione e il suo valore di ritorno quando io passo nel test() la funzione, senza dover digitare due argomenti?

C'è un'opzione migliore, forse alcuni di unit testing quadri di fornire questo?

Il mio attuale metodo funziona, ma è goffo e vorrei eliminare la necessità per il secondo argomento:

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

Migliore risposta

1

Il modo più sicuro sarebbe quello di passare la stringa, quindi usare le parentesi per cercare su this. Utilizzare un campo di classe freccia funzione, il this il contesto è corretto.

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

È possibile scrivere qualcosa di simile al di sotto di estendere la risposta di @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

In altre lingue

Questa pagina è in altre lingue

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