Разрешить обещание CSV Stringify в тесте или завершить тест при вызове функции? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь смоделировать CSV Stringify с AngularJS ... но я просто хочу взять два переданных параметра и использовать их позже в тесте, чтобы проверить правильность некоторых параметров.

it("converts latitude and longitude correctly", function() {
  this.CSV._stringifyPromise._setResolveMode("instant");
  var csvFeatures, csvOptions;
  this.CSV.stringify.and.callFake(function(csvFeaturesInStringify,
    csvOptionsInStringify) {
    csvFeatures = csvFeaturesInStringify;
    csvOptions = csvOptionsInStringify;
  });

  this.featureExportCSVService.buildCsvFile(this.features, "Test");
  expect(this.csvOptions[0].LONG).toEqual(this.features[0].geometry.coordinates[
    0].toString());
  expect(this.csvOptions[0].LAT).toEqual(this.features[0].geometry.coordinates[
    1].toString());
});

Я считаю, что CSV stringify возвращает обещание в не тестовом коде, как он называется ...

    CSV.stringify(csvObject.features, csvObject.options)
      .then(function(result) { ... }

Я предполагал, что это просто вернет результат в моем фальшивом вызове, но это, похоже, не работает.

  this.CSV.stringify.and.callFake(function(csvFeaturesInStringify,
    csvOptionsInStringify) {
    expect(...);
    expect(...);
    return "test,blah,blah";
  });

Я пытался использовать $q.defer().resolve();, но $q не был определен. Делая возврат, он просто говорит undefined is not a constructor

Как мне разрешить эту функцию, чтобы она просто возвращала фиктивную строку или даже просто завершила тест здесь и оценила мои expect() вызовы?

1 Ответ

0 голосов
/ 05 июля 2018

Нужно вызывать возвращаемый результат с помощью функции then и successCallback ....

  this.CSV.stringify.and.callFake(function(csvFeaturesInStringify, csvOptionsInStringify) {
    csvFeatures = csvFeaturesInStringify;
    return {
      then: function(successCallback) {
        successCallback("geometry,LAT,LONG,name,marker-color");
      }
    };

Затем после вызова функции, которая в конечном итоге попадает в этот метод, вам нужно поместить блоки ожидаемых там, а не здесь.

  this.featureExportCSVService.buildCsvFile(this.features, "Test");
  expect(this.csvOptions[0].LONG).toEqual(this.features[0].geometry.coordinates[
    0].toString());
  expect(this.csvOptions[0].LAT).toEqual(this.features[0].geometry.coordinates[
    1].toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...