javascript - Jasmine 与 helper

标签 javascript node.js jasmine

我是 Jasmine 测试的新手,我需要测试一个 nodejs express 应用程序。 我没有找到任何关于在所有测试之前调用的其他 Jasmine 助手的文档。

只是尝试我发现添加

beforeAll(async()=>{
   ...
});
afterAll(async()=>{
   ...
});

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

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

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

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

function testMethod(){
    console.log("test helper called");
}

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

我正在使用 jasmine 版本 3.2.1

最佳答案

Jasmine 测试用例在 describe block 中。

  • 每个describe block 都有自己的beforeAll, afterAll, beforeEach, afterEach.
  • 在另一个describe block 中可以有describe

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

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

但您可以通过以下方式实现这一目标:

在辅助函数中创建服务器

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

module.exports = { setupServer };

在规范文件中:

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

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

    it('some test', () => {});
});

或者如果您根本不需要返回。它可以很短:

beforeEach(setupServer);

希望这有帮助:)

关于javascript - Jasmine 与 helper ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52567467/

相关文章:

angularjs - 当没有 $scope 强制摘要时,如何解决 AngularJS、Jasmine 2.0 中的 promise ?

javascript - 取一个数字并将其转换为数字数组

javascript - 花式框 3 JQuery : Close gallery when click outside element

javascript - Index.html 到 EJS 文件错误

node.js - 如何为 GitHub 上的 NPM 包命名(vuejs 包)

node.js - 连接表的 REST uri 命名约定

angular - 将 jasmie .toHaveBeenCalledWith() 函数与 Moment 对象一起使用

javascript - 如何在Sinon JS中延迟假后端的特定响应

javascript - Mocha ES6 巴别塔 "TypeError: undefined is not a function"

Javascript 删除功能不适用于所选名称