我正在为使用浏览器 WebAPI 接口的类编写单元测试。
我使用 ts-mockito 来模拟界面(在我的例子中是WebGL2RenderingContext)。
当我运行测试时,Node throwsReferenceError: WebGL2RenderingContext is not defined
这是可以理解的,因为测试是在 NodeJS 环境下运行的,而不是浏览器,所以类/接口不存在。
有什么方法可以让 NodeJS 环境了解 WebAPI 接口,以便可以模拟?
注意:因为它是一个单元测试,它不应该在真正的浏览器上运行。
jsdom似乎是一个可能的解决方案,但我不知道如何用 ts-mockito 模拟它。
以下片段说明了我正在尝试做的事情:
import { mock, instance, verify } from 'ts-mockito'
// ========== CLASS ==========
class DummyClass {
dummyMethod() : void {}
}
class TestedClass {
static testDummy(dummy : DummyClass) : void {
dummy.dummyMethod();
}
static testGlCtx(glCtx : WebGL2RenderingContext) : void {
glCtx.flush();
}
}
// ========== TEST ==========
describe('DummyClass', () => {
// This test passed successfully
it('works fine', () => {
const mockDummy = mock(DummyClass);
TestedClass.testDummy( instance(mockDummy) );
verify( mockDummy.dummyMethod() ).once();
});
});
describe('WebGL interface', () => {
it('works fine', () => {
// This line failed with 'ReferenceError: WebGL2RenderingContext is not defined'
const mockGLCtx = mock(WebGL2RenderingContext);
TestedClass.testGlCtx( instance(mockGLCtx) );
verify( mockGLCtx.flush() ).once();
});
});
使用 mocha 和命令运行mocha --require ts-node/register 'test.ts'
。