Jasmine2: получить текущее имя спецификации

В Jasmine 1.3 у нас была эта опция для получения текущих спецификаций и имен пакетов:

describe("name for describe", function () {
    it("name for it", function () {
        console.log(this.suite.getFullName()); // would print "name for describe"
        console.log(this.description); // would print "name for it"
    });
});

Это больше не работает в Jasmine 2.x. Кто-нибудь знает, как их получить?

Спасибо.

Ответы

Ответ 1

Причина этого больше не работает, потому что this не является тестом. Вы можете внести незначительные изменения в свои объявления, но это исправить. Вместо того, чтобы просто делать:

it("name for it", function() {});

Определите it как переменную:

var spec = it("name for it", function() {
   console.log(spec.description); // prints "name for it"
});

Это не требует плагинов и работает со стандартным Jasmine.

Ответ 2

Я добавляю нового репортера жасмина, а затем получаю имя спецификации без переменной N для каждой спецификации. Надежда может помочь, спасибо.

var reporterCurrentSpec = {
     specStarted: function(result) {
         this.name = result.fullName;
     }
 };
jasmine.getEnv().addReporter(reporterCurrentSpec);

Ответ 3

Что касается Жасмина 2, то токSpec прекращается специально. Однако существует разработанная специально разработанная плагин/библиотека, основанная на плагине жасминового репортера, которую вы можете использовать. Здесь Ссылка. Надеюсь, это поможет с вашим требованием.

Его очень просто использовать, установите пакет с командой npm -

npm install -g jasmine-test-container-support

Получите поддержку тестового контейнера, написав ниже строки перед тем, как описать или набор тестов -

var JasmineTestContainerSupport = window.JasmineTestContainerSupport || require('jasmine-test-container-support');

JasmineTestContainerSupport.extend(jasmine);

Позже используйте тестовый контейнер в спецификации, чтобы получить его описание -

var specDesc = jasmine.getEnv().getTestContainer();

Надеюсь, что это поможет.

Ответ 4

    var currentSpecName = describe('Test1', function() {
        var currentStepName = it("Step1", function(){
           console.log(currentStepName.description); // Prints It Name
           console.log(currentSpecName.getFullName()); //Prints Describe Name
        });
    });

Ответ 5

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

  describe("name for describe", function () {
    console.log(this.getFullName()); // would print "name for describe"
    it("name for it", function () {
      //Your test spec
    });
  });