gpt4 book ai didi

node.js - 使用 sinon 进行 NodeJS 单元测试的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:45 27 4
gpt4 key购买 nike

我拥有 Spring 框架的 Java 经验,正在寻找在 Nodejs 中使用模拟编写测试的最优雅的方法。

对于java来说它看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
public class AccountManagerFacadeTest {

@InjectMocks
AccountManagerFacade accountManagerFacade;

@Mock
IService service

@Test
public void test() {
//before
here you define specific mock behavior
//when

//then
}
}

正在寻找类似的nodeJS,有什么建议吗?

最佳答案

由于 JavaScript 的灵 active ,使用 Node.js 进行模拟比 Java 容易得多。

这是类模拟的完整示例,其中包含以下类:

// lib/accountManager.js
class AccountManager {
create (name) {
this._privateCreate(name);
}

update () {
console.log('update')
}

delete () {
console.log('delete')
}

_privateCreate() {
console.log('_privateCreate')
}
}

module.exports = AccountManager

你可以这样 mock 它:

// test/accountManager.test.js
const
sinon = require('sinon'),
should = require('should')
AccountManager = require('../lib/accountManager');

require('should-sinon'); // Required to use sinon helpers with should

describe('AccountManager', () => {
let
accountManager,
accountManagerMock;

beforeEach(() => {
accountManagerMock = {
_privateCreate: sinon.stub() // Mock only desired methods
};

accountManager = Object.assign(new AccountManager(), accountManagerMock);
});

describe('#create', () => {
it('call _privateCreate method with good arguments', () => {
accountManager.create('aschen');

should(accountManagerMock._privateCreate).be.calledOnce();
should(accountManagerMock._privateCreate).be.calledWith('aschen');
})
});
});

在这里您可以找到有关模拟类和依赖项的更多示例:https://github.com/Aschen/workshop-tdd/blob/master/step2/test/file.test.js

关于node.js - 使用 sinon 进行 NodeJS 单元测试的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912051/

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