Node.js 如何使用nguniversal在Angular中测试服务器端代码
我有11个角 环境信息Node.js 如何使用nguniversal在Angular中测试服务器端代码,node.js,angular,typescript,protractor,karma-jasmine,Node.js,Angular,Typescript,Protractor,Karma Jasmine,我有11个角 环境信息 _ _ ____ _ ___ / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| /△ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | | / ___ \| | | | (_| | |_| | | (_| | | | |___| |_
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/△ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 11.2.11
Node: 16.0.0
OS: linux x64
Angular: 11.2.12
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router
Ivy Workspace: Yes
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1102.11
@angular-devkit/build-angular 0.1102.11
@angular-devkit/core 11.2.11
@angular-devkit/schematics 11.2.11
@angular/cdk 11.2.11
@angular/cli 11.2.11
@angular/material 11.2.11
@nguniversal/builders 11.2.1
@nguniversal/express-engine 11.2.1
@schematics/angular 11.2.11
@schematics/update 0.1102.11
rxjs 6.6.3
typescript 4.0.3
如您所见,我正在运行nguniversal进行服务器端渲染。我还需要一个API,所以我将它构建到为预渲染的角度视图提供服务的同一个Web服务器中
现在,我有一些测试可以与ng test
完美配合。问题是我的API没有经过测试,所以我想为它添加一些测试。假设我有这样一个模块:
从“fs”导入{readFileSync};
函数readAFile(fname:string):string{
返回readFileSync(fname,{encoding:“utf8”});
}
导出函数doNothing():void{
log(“什么都没做”);
}
我知道我不想在测试时真正地阅读文件;我不想那么做。我只想测试doNothing
函数,它不需要从节点fs
包调用任何东西。但是,当我尝试用这样一个简单的规范来测试它时:
从“/myapimule”导入{doNothing};
描述(“任何东西”,()=>{
它(“起作用”,()=>{
doNothing();
expect(true).toBeTrue();
});
});
当我执行此操作时,ng test
因以下错误而崩溃:
10 05 2021 10:43:20.935:WARN [karma-server]: Passing raw CLI options to `new Server(config, done)` is deprecated. Use `parseConfig(configFilePath, cliOptions, {promiseConfig: true, throwErrors: true})` to prepare a processed `Config` instance and pass that as the `config` argument instead.
⠋ Generating browser application bundles...10 05 2021 10:43:34.350:WARN [proxy]: proxy "/base/src/assets" normalized to "/base/src/assets/"
10 05 2021 10:43:34.386:WARN [karma]: No captured browser, open http://localhost:9876/
10 05 2021 10:43:34.388:INFO [karma-server]: Karma v6.3.2 server started at http://localhost:9876/
10 05 2021 10:43:34.388:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
10 05 2021 10:43:34.392:INFO [launcher]: Starting browser Chrome
✔ Browser application bundle generation complete.
Error: Module not found: Error: Can't resolve 'fs' in '/path/to/directory/containing/my/api/module/'
10 05 2021 10:43:41.443:ERROR [karma-server]: UnhandledRejection: Error: ENOENT: no such file or directory, stat '/home/ocket8888/.steampath'
10 05 2021 10:43:41.443:ERROR [karma-server]: [Error: ENOENT: no such file or directory, stat '/home/ocket8888/.steampath'] {
errno: -2,
code: 'ENOENT',
syscall: 'stat',
path: '/home/ocket8888/.steampath'
}
我也不知道为什么它关心我的Steam文件,或者项目目录之外的任何东西,但这似乎与问题无关
如何为Angular Universal编写测试,以测试需要导入节点库的服务器端代码