对于摩卡和锡南的打字稿中的单元测试,我得到了一个在断言时失败的测试。 bar-是真正的Sinon存根,但任何时候都没有调用。以下是tormozz48用户要求我在打字稿中遇到相同问题的链接。
https://github.com/sinonjs/sinon/issues/1684
这里的问题是无法从另一个模块获取导入的类方法,所以我所做的是导出为
class Foo(){
}
export default new Foo()
并将相同的内容导入另一个模块,如
import * as foo from 'foo.ts'
现在,我可以像上述出口一样对锡农进行打桩了。我的问题是我做对了吗?导出类的实例是否更好?
这里是一个无需导出类的示例:
import * as chai from 'chai';
import * as sinon from 'sinon';
import { SomeClass } from './some.component';
import { SinonStubbedInstance } from 'sinon';
describe('SomeClass ', () => {
beforeEach(() => {
chai.should();
});
it('should create', () => {
let classStub: SinonStubbedInstance<SomeClass>;
classStub= sinon.createStubInstance(SomeClass);
let expected: any = (classStub == undefined);
expected.should.be.false;
});
it('should call someMethod', () => {
// Arrange
let classStub: SinonStubbedInstance<SomeClass>;
// Act
classStub= sinon.createStubInstance(SomeClass);
classStub.someMethod();
// Assert
classStub.someMethod.calledOnce.should.be.true;
});
如果不使用chai
,可以将其删除。