茉莉花与助手

Dan*_*tta 5 javascript node.js jasmine

我是 Jasmine 测试的新手,我需要测试 Nodejs Express 应用程序。我没有找到任何有关在所有测试之前调用的茉莉花助手的文档。

只是尝试我发现添加

beforeAll(async()=>{
   ...
});
afterAll(async()=>{
   ...
});
Run Code Online (Sandbox Code Playgroud)

在我的 /spec/helpers/myhelper.js 中,这些函数在所有代码之后和之前执行,但我没有在帮助程序中找到有关此行为的文档。这是标准行为吗?

是否可以在 myhelper.js 中创建我的辅助函数并在测试期间调用该函数?如何?

我的实际 /spec/helpers/myhelper.js 是:

let server = require("../../app");
console.log('server started before tests....');

function testMethod(){
    console.log("test helper called");
}
Run Code Online (Sandbox Code Playgroud)

如何从我的测试中调用我的测试辅助方法?

我使用的是茉莉花版本3.2.1

mix*_*xth 5

Jasmine 测试用例位于describe块内。

  • 每个describe块都有自己的 beforeAll、、、。afterAllbeforeEachafterEach
  • 可以describe在另一个describe块内。

通常,我有一个规范文件,其中包含describe一个测试单元的一个块。该被测单元的测试用例的设置和拆卸将在 this 的这 4 个函数中进行describe

据我所知,如果你想将辅助函数分离到新文件中,你可以正常导入它并在 target 的 setup 和teardown 中执行它describe。但我从未这样做过,因为我从未遇到过某些类具有相同的设置或拆卸过程的情况。

但实现这一目标的方法如下:

在辅助函数中创建服务器

function setupServer() {
  let server = require("../../app");
  console.log('server started before tests....');
  console.log("test helper called");
  return server;
}

module.exports = { setupServer };
Run Code Online (Sandbox Code Playgroud)

在规格文件中:

const { setupServer } = require('/myhelper');

describe('some unit', () => {
    let server;
    beforeEach(() => {
        server = setupServer();
    });

    it('some test', () => {});
});
Run Code Online (Sandbox Code Playgroud)

或者如果您根本不需要退货。它可以短至:

beforeEach(setupServer);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)