当 运行 jasmine 测试时,我怎么知道我是在 describe 块,beforeEach 块还是 it 块中?

When running jasmine tests, how can I know if I am in a describe block, beforeEach block or it block?

如果在我的测试中在 'it' 或 'beforeEach' 块之外使用实用程序,我需要抛出异常。 示例 -

   describe('some test', function(){

     useUtil();     // should throw exception

     beforeEach(function(){
        useUtil()   // should work
     })

     it('should test something', function(){
        useUtil()   // should work
     }) 
   })

该实用程序创建间谍,我想确保它们的创建方式允许 Jasmine 在每个套件后清理它们。

您可以创建一个名为 isSpecPhase 的全局可访问变量,并将其初始设置为 false

然后,定义一个全局的beforeEach:

beforeEach(function () {
    isSpecPhase = true;
});

确保在所有其他套件之前定义 beforeEach,以便它在您的每个规范之前运行。 在您的 util 函数中,您可以检查是否 isSpecPhase === true,否则抛出异常。