我刚刚开始在我的快速应用程序中使用中间件supertest并nock为其编写单元测试。
首先检查我的路由器设置处理的所有请求是否存在会话属性(我正在使用Express-Session)。
app.use('/api', helpers.hasAccessToken, require('./routes.js'));
Run Code Online (Sandbox Code Playgroud)
助手只是这样做:
module.exports.hasAccessToken = function(req, res, next) {
if(req.session.accessToken){
next();
} else {
res.status(401).send('LOGIN_SESSION_ENDED');
}
};
Run Code Online (Sandbox Code Playgroud)
在我的测试规范中,我有:
var app = require('./index.js'),
request = require('supertest')(app),
expect = require('chai').expect,
nock = require('nock');
describe('GET requests', function(){
beforeEach(function(){
nock('https://somedomain:port')
.get('/someendpoint')
.reply(200, {foo:'bar'});
});
it('should return a 200 HTTP status code', function(done){
request
.get('/api/someendpoint')
.end(function(err, res){
expect(res.status).to.equal(200);
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
相反,将返回状态为401的错误,我知道req.session.accessToken这取决于运行测试之前未设置的属性。
那么,如何才能使该req对象对会话对象执行我喜欢的操作?
谢谢
我刚刚设置了一个基本的multibranch管道构建作业,并且有一个带有jenkinsfile的功能分支,我正在尝试这个功能.
我将工作配置为每隔5分钟轮询scm并在必要时触发构建.
我有时发现然而,当我手动启动建立我的分支我已经推后了一个调整我的Jenkinsfile为例(因为我不想等待下一个SCM轮询间隔),分支重新索引活动仍然可以触发另一个构建执行.
请参阅下面的我是什么意思的形象,所以在这里建造7是一个我拉开序幕手动上詹金斯,所以它拿起我的承诺,但随后的分支索引拉开序幕构建8但还没有为分支没有新的变化.
有没有办法防止这种情况发生?除了我耐心等待5分钟当然!
谢谢
我正在使用带有Karma的angular-cli,我需要在运行单元测试时排除特定文件的编译.
有问题的文件在下面的错误中被引用,由于模块不存在而无法编译它所依赖的文件.
该文件由模块将出现的其他项目使用,因此编译正常,它只是在这个特定项目中它不需要编译但仍需要导出.
我的目录结构如下:
index.ts
- /src
- /testing
Run Code Online (Sandbox Code Playgroud)
在我的index.ts文件中,我有一个导出:
export * from './src/core';
Run Code Online (Sandbox Code Playgroud)
我的testing文件夹下的TS源文件被编译器拾取,我不确定为什么因为我没有在我的src文件夹下的文件或其他任何地方导入该文件夹下的任何文件.
我想阻止编译器完全拿起我的测试文件夹,但我不能让它忽略它.
我正在使用angular-cli,在我的.angular-cli.json文件中我有这些行:
"tsconfig": "tsconfig.json",
"testTsconfig": "tsconfig.spec.json"
Run Code Online (Sandbox Code Playgroud)
这两个文件都位于我的src文件夹下,我尝试将一些排除模式添加到我的tsconfig.spec.json中,如下所示:
"exclude": [
"../testing",
"testing"
]
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.
然后我想知道业力是否肯定使用我的tsconfig.spec.json文件,所以我添加了以下内容:
karmaTypescriptConfig : {
tsconfig: '.src/tsconfig.spec.json',
}
Run Code Online (Sandbox Code Playgroud)
但同样,仍然没有区别,我的测试文件夹在准备运行我的测试时被编译器拾取.
我不确定还有什么可以尝试,我已经将我的TypeScript(3.1.6)和Karma(3.1.1)版本更新到最新版本.
有没有人对这里可能发生的事情有任何想法?
谢谢
我正在编写一个TS库,并想导出一个类的实例,所以我打算在消费应用程序中将其用作单例。
现在,我具有以下结构:
索引
export { Foo } from './my-class';
Run Code Online (Sandbox Code Playgroud)
foo.ts
export class Foo {
functionA() {}
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用webpack和babel将其构建为UMD格式,并且在另一个应用程序(Angular)中,我能够在我的类中导入,实例化并相应地使用它。
import { Foo } from 'foo';
private foo = new Foo();
const x = foo.functionA();
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以返回我的类的实例化实例,或者我是否正在以错误的方式考虑呢?
因此,不必这样做new Foo(),导入的Foo实际上已经是一个实例了吗?
谢谢
我应该提到的UPDATE,我正在导出接口之类的其他内容,因此我认为默认类导出不是正确的正确方法吗?-看这里
我想防止在已配置的面积图的y轴上显示十进制值。
当我的图表最初显示所有系列显示时,我看到:
But after filtering out some of the series to show, I see the y axis start showing decimal values like so:
My yAxis config is as follows:
yAxis: {
gridLineColor: 'transparent',
allowDecimals: false,
type: 'logarithmic',
minorTickInterval: 1,
lineWidth: 0,
gridLineWidth: 0,
minorGridLineWidth: 0
},
Run Code Online (Sandbox Code Playgroud)
I wondered if this had something to do with being a logarithmic scale, but when I comment out the type option to revert to using a default scale, it makes no difference, I observe …
我正在尝试使用以下方法应用特定的存储:
git stash apply stash@{2}
Run Code Online (Sandbox Code Playgroud)
但最终出现了这个错误:
致命的:模糊的论点'stash @':未知的修订或路径不在工作树中.
我有很多藏匿的条目,如果我做一个git存储列表超过20
我不确定这个错误试图告诉我什么,有人可以进一步建议吗?谢谢
当我尝试生成 Jenkins 管道作业的综合覆盖率报告时,发生了一些奇怪的事情。
我有一个 Nx 支持的 Angular monorepo,并且正在生成其中包含的所有库和项目的覆盖率报告。
我已将以下脚本放在一起来运行测试,然后用于nyc合并和报告操作。
const { execSync } = require('child_process');
const packageJSON = require("../package.json");
const EXCLUDE_UNIT_TEST = packageJSON.buildData.excludeUnitTest;
const run = (commands) => {
commands.forEach((command) => execSync(command, { stdio: 'inherit' }));
};
run([
`rm -rf coverage`,
`npx nx run-many --target=test --all --maxWorkers=4 --exclude=${EXCLUDE_UNIT_TEST} --coverage=true`,
`npx copyfiles -f 'coverage/**/*coverage.json' coverage/project-parts`,
`npx nyc merge coverage/project-parts coverage/nyc/combined.json`,
`npx nyc report --reporter html-spa --reporter lcov -t coverage/nyc --report-dir coverage/combined`
]);
Run Code Online (Sandbox Code Playgroud)
这在本地对我来说效果很好,我看到我的所有库/项目都有一个 HTML 报告(lcov 格式和 html-spa 报告)。
但是,当在 …
我在模型选项中配置了去抖动输入,如下所示:
<input type="text"
ng-model="searchTerm"
ng-keypress="$event.which===13 && search(searchTerm)"
ng-model-options="{debounce: 1000}">
Run Code Online (Sandbox Code Playgroud)
然后,我为模型值设置了一个手表:
$scope.$watch('searchTerm', function (term) {
if (!term || term.length === 0) {
$scope.clearSearch();
}
if (term.length > 3) {
$scope.search(term);
}
});
Run Code Online (Sandbox Code Playgroud)
从输入声明中可以看出,如果按下回车键,我已经配置了一个ng-keypress事件来调用我的搜索功能.
有没有办法可以清除去抖动,所以[enter]键按键会清除debounce,允许searchTerm立即更新?
谢谢
所以我在 mongo 商店中使用 express-session,如下所示:
app.use(session({
secret: 'some secret here',
saveUninitialized: false,
resave: false,
store: new MongoStore({
url: 'http://someurlhere'
})
}));
Run Code Online (Sandbox Code Playgroud)
我有一些登录中间件,在成功登录后,我想设置会话 cookie 到期时间。
所以我现在正在使用 10 秒的到期时间进行测试
req.session.cookie.expires = new Date(Date.now() + 10000);
Run Code Online (Sandbox Code Playgroud)
我希望为每个后续请求重置会话到期时间。目前,经过 10 秒后,无论我在登录后发出多少请求,会话都会过期。
我觉得我在这里误解了一些东西!
编辑
好的,所以我错过了rolling文档中的配置选项,但即使我在会话配置选项中将其设置为 true,也会发生相同的行为:
app.use(session({
secret: 'some secret here',
saveUninitialized: false,
resave: false,
store: new MongoStore({
url: 'http://someurlhere'
}),
rolling: true,
cookie: {
maxAge: 10000
}
}));
Run Code Online (Sandbox Code Playgroud)
我现在正在控制台记录我的路由中 cookie maxAge 的值,并看到它随着登录后的每个后续请求而减少,它永远不会重置回 10000。
我究竟做错了什么?
解决了
好的,所以我遇到了关于这个问题的评论
我更改resave为 true,现在按预期工作。
我正在将我们的业力测试迁移到旧的 Angular 9 应用程序中的 Jest,并且面临一些测试失败的问题,并出现以下类型的异常:
类型错误:类构造函数 SomeComponentClass 无法在没有“new”的情况下调用
我遵循 Jest 设置指南并参考了其他一些独立指南,我的设置如下:
笑话配置.js
module.exports = {
preset: "jest-preset-angular",
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
globals: {
'ts-jest': {
tsconfig: '<rootDir>/src/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
},
coverageDirectory: 'coverage',
coverageReporters: ["html", "text-summary", "json-summary", "cobertura"],
transform: {
'^.+\\.(ts|js|html)$': 'jest-preset-angular',
},
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
testEnvironment: "jsdom",
transformIgnorePatterns: [
"node_modules/(?!@o3|@al|ui-metadata)"
],
testPathIgnorePatterns: [
"<rootDir>/node_modules/",
"<rootDir>/dist/",
"<rootDir>/cypress/",
"<rootDir>/src/test.ts/"
],
reporters: [ "default" ],
testMatch: [
"<rootDir>/src/exposures/**/*.spec.ts"
]
};
Run Code Online (Sandbox Code Playgroud)
测试设置.ts
import 'jest-preset-angular/setup-jest';
import '@angular/localize/init';
Object.defineProperty(window, 'CSS', { value: null }); …Run Code Online (Sandbox Code Playgroud) angular ×3
express ×2
jenkins ×2
node.js ×2
typescript ×2
angularjs ×1
babel-jest ×1
git ×1
highcharts ×1
istanbul ×1
jestjs ×1
karma-runner ×1
nrwl-nx ×1
nyc ×1
supertest ×1
ts-jest ×1
ts-node ×1
umd ×1