gpt4 book ai didi

javascript - 使用 Mocha 和 Node.js 对私有(private)函数进行单元测试

转载 作者:IT老高 更新时间:2023-10-28 21:46:49 25 4
gpt4 key购买 nike

我正在使用 Mocha为了对为 Node.js 编写的应用程序进行单元测试。

我想知道是否可以对尚未在模块中导出的函数进行单元测试。

示例:

我在 foobar.js 中有很多这样定义的函数:

function private_foobar1(){
...
}

function private_foobar2(){
...
}

还有一些导出为公共(public)的函数:

exports.public_foobar3 = function(){
...
}

测试用例的结构如下:

describe("private_foobar1", function() {
it("should do stuff", function(done) {
var stuff = foobar.private_foobar1(filter);
should(stuff).be.ok;
should(stuff).....

显然这不起作用,因为 private_foobar1 没有导出。

对私有(private)方法进行单元测试的正确方法是什么? Mocha 是否有一些内置方法可以做到这一点?

最佳答案

查看 rewire模块。它允许您在模块中获取(和操作)私有(private)变量和函数。

所以在你的情况下,用法是这样的:

var rewire = require('rewire'),
foobar = rewire('./foobar'); // Bring your module in with rewire

describe("private_foobar1", function() {

// Use the special '__get__' accessor to get your private function.
var private_foobar1 = foobar.__get__('private_foobar1');

it("should do stuff", function(done) {
var stuff = private_foobar1(filter);
should(stuff).be.ok;
should(stuff).....

关于javascript - 使用 Mocha 和 Node.js 对私有(private)函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com