Nano Hash - криптовалюты, майнинг, программирование

ошибка заглушки sinon при попытке обернуть неопределенное свойство задания как функцию

Я пытаюсь использовать заглушку sinon для проверки моей функции, которая содержит две переменные, называемые job и job1. Как дать им временные значения, чтобы избежать значений функций.

В одном из файлов myFunction.js у меня есть такие функции, как

function testFunction() {
  var job = this.win.get.value1   //test
  var job1 = this.win.get.value2 // test1
  if(job === 'test' && job1 === 'test1') {
    return true;
  }
    return false; 
}

и я пытаюсь протестировать testFunction, используя карму, и я попытался заглушить два значения своими значениями, чтобы он мог переопределить значения функции

it('should test my function', function(done) {
  var stub = sinon.stub('job','job1').values('test','test1');
  myFunction.testFunction('test', function(err, decodedPayload) {
    decodedPayload.should.equal(true);
    done();
  });
});

Я получаю сообщение об ошибке "попытка обернуть неопределенное свойство задания как функцию"


Ответы:


1

Прежде всего, вы можете упростить свою testFunction до следующего.

function testFunction() {
  return this.win.get.value1 === 'test' && this.win.get.value2 === 'test1';
}

Здесь нет ничего асинхронного, поэтому в вашем тесте вам не нужно использовать done().

В документации Sinon «заглушка» предлагается использовать функцию песочницы для заглушки не- функциональные свойства.

Из вашего вопроса неясно, каков ваш контекст «это», поэтому я предполагаю, что ваши тесты создали экземпляр того, что вы тестируете, с именем «myFunction» (что подразумевает ваш тест).

Также неясно, что такое «выиграть» и «получить», поэтому предполагается, что они являются объектами.

Не забудьте восстановить () песочницу, чтобы не загрязнять последующие тесты.

it('should test my function', function() {
  var sandbox = sinon.sandbox.create();
  sandbox.stub(myFunction, 'win').value({
    get: {
      value1: 'test',
      value2: 'test1',
    }
  });

  myFunction.testFunction().should.equal(true);

  sandbox.restore();
});
02.05.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..