小编tim*_*ray的帖子

更改 Angular 测试中的组件变量会影响其他测试

在我的测试中,我导入一个 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)

导致下一个测试通过。

有任何想法吗?!

unit-testing jasmine angular

7
推荐指数
1
解决办法
9454
查看次数

Angular *ngIf 检查地图中是否存在键

我有一张地图,看起来像:

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

ecmascript-6 angular-ng-if angular

3
推荐指数
2
解决办法
2万
查看次数

在Jasmine中测试中的beforeEach中定义的访问const

对于给定的代码,如何myConst在test中访问const myTest

describe('HeaderCustomerDetailsComponent child components',() => {
  beforeEach(() => {
    ...
    const myConst = "Something";
  });

  it('myTest', () => {
    expect(myConst).toBeTruthy();
  });
});
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine karma-runner angular

2
推荐指数
1
解决办法
597
查看次数

使用 AWS SDK (JS) 进行 s3.selectObjectContent 在“on”关键字上出现错误

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工作?

amazon-s3 aws-sdk-nodejs aws-sdk-js

2
推荐指数
1
解决办法
1413
查看次数

具有相同 slug 的多语言 Ghost

我想创建一个多语言 Ghost CMS 网站,在多语言帖子中使用相同的 slugs。

例如

  • CN: my-site.com/hello-world
  • 法国:my-site.com/fr/hello-world

从本演练中我了解到,我需要为每种语言多次创建相同的帖子,并且 slug 必须是唯一的。为了保持一致,我想对hello-world每种语言的同一篇文章使用相同的 slug (即 )。有没有办法做到这一点,也许是通过动态路由?

multilingual slug ghost-blog

1
推荐指数
1
解决办法
598
查看次数