Jasmine2:获取当前的规格名称

时间:2015-03-18 09:46:30

标签: jasmine protractor

在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中不再有效。 任何人都知道如何获取这些?

感谢。

6 个答案:

答案 0 :(得分:8)

我添加了一个新的jasmine报告器,然后获取规范名称,而不是在每个规范上定义N变量。希望可以提供帮助,谢谢。

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

答案 1 :(得分:5)

这不再起作用的原因是因为this不是测试。您可以对声明进行细微更改,但要修复它。而不只是做:

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

it定义为变量:

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

这不需要插件,可以使用标准的Jasmine。

答案 2 :(得分:2)

就Jasmine 2而言,currentSpec是故意停止的。但是,开发了一个基于jasmine报告插件的自定义插件/库,您可以使用它。这是 Link。希望它有助于满足您的要求。

使用非常简单,使用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();

希望这有帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

这在茉莉3.5+版本中对我有效

我知道这是一个相对较老的问题,但是发现了一些对我有用的

describe('Desc1',() => {
   
    afterEach(() => {
      const myReporter = {
        specDone: (result) => {
          console.log('Spec FullName: ' + result.fullName);
          console.log('Spec Result: ' + result.status);
        }
      };
      jasmine.getEnv().addReporter(myReporter);
    });
})

解决方案的信用:https://groups.google.com/g/jasmine-js/c/qqOk6Nh7m4c/m/Nyovy2EjAgAJ

答案 5 :(得分:-2)

这可能有点晚了,但您可以在规范之外获得套件名称。 请尝试以下代码:

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