Как смоделировать глобальную переменную в классе - PullRequest
1 голос
/ 14 января 2020

У меня есть файл класса, someClass.js, который выглядит следующим образом:

//assigns globalVar from some file
const globalVar = getFromFile() //returns a string such as "some global var"

export default class SomeClass {
  ...
  public static someFunc() {
     if (globalVar == "Hello"){
       return 2
     }
     else {
       return 3
     }
  }

И в моем тестовом файле я импортирую его так:

import SomeClass from './someClass';

В моем тесты Я хочу перезаписать globalVar разными значениями для каждого теста, например:

test('call someFunc with globalVar set to Hello', async () => {
  //set globalVar to "Hello"--how can I do this?
  const result = SomeClass.someFunc()
  expect(result).toBe(2)
}

Как я могу это сделать? Есть ли способ издеваться над const?

Ответы [ 4 ]

1 голос
/ 14 января 2020

Ты не. Const нельзя изменить, поэтому он называется константой.

Вместо этого используйте var.

0 голосов
/ 14 января 2020

Как сказал @Markus Zeller, вы должны использовать var. В противном случае вы можете сделать что-то вроде этого:

const globalvar = "Hello"

 class MyClass  {
  constructor(data=false) {
    this.globalVar  = !data ? globalvar : data;
  }

   someFunc() {
     if (this.globalVar == "Hello"){
       return 2
     }else {
       return 3
     }
   }
}

let myclass = new MyClass()
console.log(myclass.globalVar )
console.log(myclass.someFunc() )

var anotherglobalvar = "another var :D"
let anothermyclass = new MyClass(anotherglobalvar)
console.log(anothermyclass.someFunc() )

Если аргумент не передан конструктору, он использует глобальный globalvar, иначе он будет использовать аргумент.

0 голосов
/ 14 января 2020

Просто установите переменную 'Var'. Постоянная переменная будет доступна только для чтения:)

Я рекомендую вам взглянуть на это: https://medium.com/javascript-scene/javascript-es6-var-let-or-const-ba58b8dcde75

Удачного кодирования!

0 голосов
/ 14 января 2020

Определите константы в отдельном модуле, а затем смоделируйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...