【问题标题】:When running jasmine tests, how can I know if I am in a describe block, beforeEach block or it block?运行 jasmine 测试时,我如何知道我是在 describe 块、beforeEach 块还是 it 块中?
【发布时间】:2015-01-27 14:21:24
【问题描述】:

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

   describe('some test', function(){

     useUtil();     // should throw exception

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

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

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

【问题讨论】:

  • 你无法知道(在运行时)。您可以静态分析代码,但这似乎比它的价值更多。
  • 可能可以通过在useUtil 中抛出并捕获异常并检查抛出的Errorstack 属性来破解某些东西。 stack 是非标准的,因此运行时的行为将不一致。
  • 请查看 jasmine 文档中是否有间谍:jasmine.github.io/edge/introduction.html#section-Spies

标签: javascript testing tdd jasmine spy


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-16
    • 2018-06-28
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多