在我的测试中,我导入一个 JSON 文件来设置模拟值(通常会作为 传递到我的组件@Input())。
我的印象是,如果beforeEach使用 Angular 测试,它会在每次测试运行之前重置组件变量;因此,更改一个测试中组件变量的值不应影响同一测试台中的其他测试。
但是,我发现当测试中更改变量值时,在下beforeEach一个测试运行之前它不会被重置。
模拟板.json
{
"board": {
"type": "Archived"
}
}
Run Code Online (Sandbox Code Playgroud)
组件规格
{
"board": {
"type": "Archived"
}
}
Run Code Online (Sandbox Code Playgroud)
如何确保在每次测试运行之前组件变量始终重置回原始值?
编辑
我设法在这里复制了 StackBlitz 中的错误。
在第二个测试中,按如下方式设置该值:
component.board.type = 'Progress';
Run Code Online (Sandbox Code Playgroud)
导致下一个测试失败,而重写整个对象如下:
component.board = { id: 1, type: 'Progress' };
Run Code Online (Sandbox Code Playgroud)
导致下一个测试通过。
有任何想法吗?!
我有一张地图,看起来像:
let mapToSearch =
{
'aaa': '123',
'bbb': '456'
}
Run Code Online (Sandbox Code Playgroud)
我有一个变量:
let keyToFind = 'aaa';
Run Code Online (Sandbox Code Playgroud)
在我的 HTML 模板中,在 Angular*ngIf块中,我想检查是否keyToFind与此地图中的任何键匹配。
像JS这样的东西array.indexOf():
<ng-container *ngIf="mapToSearch.indexOf(keyToFind)">
Hello world
</ng-container>
Run Code Online (Sandbox Code Playgroud)
模板中的地图可以实现这样的事情吗?
更新(包括解决方案)
感谢您的所有回答。您的所有答案都适用于使用对象文字(这是我的错误 - 我应该在问题中以不同方式声明地图)。
但是,对于 ES6 地图,我发现我可以map.has(key)在模板中使用。
声明地图map.set():
let mapToSearch = new Map();
mapToSearch.set('aaa', '123'};
mapToSearch.set('bbb', '456'};
Run Code Online (Sandbox Code Playgroud)
模板:
<ng-container *ngIf="mapToSearch.has(keyToFind)">
Hello World
</ng-container>
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has
对于给定的代码,如何myConst在test中访问const myTest:
describe('HeaderCustomerDetailsComponent child components',() => {
beforeEach(() => {
...
const myConst = "Something";
});
it('myTest', () => {
expect(myConst).toBeTruthy();
});
});
Run Code Online (Sandbox Code Playgroud) 我2.730.0在 Node.JS 的 Typescript 文件中使用 AWS SDK for Javascript 版本(撰写本文时最新)。
我正在使用该selectObjectContent操作来查询 CSV 文件,并按照文档中的指南我有此块:
import * as S3 from 'aws-sdk/clients/s3';
const s3 = new S3();
...
s3.selectObjectContent(params, (err, data) => {
if (!err){
data.Payload.on('data', (event) => {
// Do something with returned records
});
}
});
Run Code Online (Sandbox Code Playgroud)
该行在data.Payload.on('data', (event) => {linter 中给出了此错误:
类型“EventStream<{ Records?: RecordsEvent;”上不存在属性“on” 统计?:统计事件;进度?:ProgressEvent;Cont?: 延续事件;结束?:结束事件;}>'。
我需要改变什么才能on工作?
我想创建一个多语言 Ghost CMS 网站,在多语言帖子中使用相同的 slugs。
例如
从本演练中我了解到,我需要为每种语言多次创建相同的帖子,并且 slug 必须是唯一的。为了保持一致,我想对hello-world每种语言的同一篇文章使用相同的 slug (即 )。有没有办法做到这一点,也许是通过动态路由?
angular ×3
jasmine ×2
unit-testing ×2
amazon-s3 ×1
aws-sdk-js ×1
ecmascript-6 ×1
ghost-blog ×1
karma-runner ×1
multilingual ×1
slug ×1