首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ngrx单元测试jasmine reducer如何比较状态

Ngrx是一个用于管理Angular应用程序状态的库,它基于Redux架构模式。在Ngrx中,reducer是一个纯函数,用于处理状态的变化。而jasmine是一种流行的JavaScript测试框架,用于编写单元测试。

当我们需要比较Ngrx reducer的状态时,可以使用jasmine提供的断言函数来进行比较。以下是一个示例:

  1. 首先,我们需要准备测试环境和所需的依赖项。在测试文件的开头,我们可以导入所需的模块和函数:
代码语言:txt
复制
import { TestBed } from '@angular/core/testing';
import { reducer } from './your-reducer';
  1. 接下来,我们可以编写测试用例。在jasmine中,我们可以使用expecttoEqual函数来比较状态。例如,我们可以编写一个测试用例来验证状态是否正确更新:
代码语言:txt
复制
describe('Your Reducer', () => {
  it('should update the state correctly', () => {
    const initialState = { count: 0 };
    const action = { type: 'INCREMENT' };

    const newState = reducer(initialState, action);

    expect(newState).toEqual({ count: 1 });
  });
});

在上述示例中,我们首先定义了初始状态initialState和一个表示递增操作的action。然后,我们调用reducer函数来获取新的状态newState。最后,我们使用expecttoEqual函数来比较新的状态是否与预期相符。

  1. 最后,我们可以运行测试用例来验证reducer的行为。在命令行中运行测试命令,例如ng test,来执行单元测试。

这样,我们就可以使用jasmine来比较Ngrx reducer的状态了。

关于Ngrx和jasmine的更多信息,你可以参考以下链接:

请注意,以上答案仅供参考,具体的实现方式可能因项目和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 接入 NGRX 状态管理

注:图片来自ngrx.io/guide/store NGRX 是 Angular 实现响应式状态管理的应用框架。...NGRX 状态管理生命周期图中包含了以下元素: Store:集中的状态存储; Action:根据用户所触的不同事件执行不同的 Action ; Reducer:根据不同的 Action 对 Store...NGRX 状态管理中包含了两条变更状态的主线: 同步变更状态:用户 => Action => Reducer => Store(State); 异步变更状态:用户 => Action => Effects...--standalone=false 安装 NGRX 核心模块: @ngrx/store:状态管理核心模块,包含了状态存储、Actions、Reducers、Selectors; @ngrx/store-devtools...[] : []; 添加核心更改状态的代码到 app/store/reducers/user.reducer.ts : import { createReducer, on } from '@ngrx/store

16010

对于“前端状态”相关问题,如何思考比较全面

在这个回答的基础上,我想引申出一个问题 —— 对于「前端状态」相关问题,如何思考比较全面? 今天,我们试着从多个抽象层级的角度回答这个问题。...所以在React中,传递给「更新状态的方法」的,是「状态的快照」,换言之,是个「不可变的数据」。 Vue关心状态如何变化。每当更新状态时,都会对「与状态关联的组件」进行diff。...现在我们知道,通过前端框架,我们可以将状态映射到UI。那么如何管理好对应的映射关系呢? 换言之,如何状态与「和他相关的UI」约束在一起? 我们再往更高一级抽象看。...同样的User Model要接入React则比较困难,因为React原生支持的是「不可变数据」类型的状态。...要接入React,我们可以将同样的User Model设计为不可变数据,采用reducer的形式书写: const userModel = { name: 'KaSong' }; const userReducer

57330

一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序

反应角 - Ngrx 让我们来谈谈我们的应用程序状态,我的意思是我们的应用程序的所有属性,它们的字面定义其当前的行为和状态。...State是一个单一的,不可变的数据结构 - 至少Ngrx为我们实现它的方式。Ngrx是由Redux提供灵感的“RxJS支持Angular应用程序的状态管理库”。 Ngrx的灵感来自Redux。...让我们看看这是如何实现的。我们讨论了State它的不变性,这意味着我们在创建它之后不能改变它的任何属性。这使得我们的应用程序状态存储在我们的系统中几乎不可能State。...为此,我们使用Reducers的纯函数,这意味着对于任何给定的State和Action它的payloadreducer,它将返回与使用相同参数的reducer函数的任何其他调用相同的状态。...什么是NgRXNgRX是一种管理应用程序状态的模式。这是一个支持Angular应用程序的RxJS驱动的状态管理库。

42.5K10

这些必备的VSCode JavaScript插件你都用过吗?

如果你想查看对各种代码检测优缺点的综述,可以来看看我们对代码检测工具的比较。)...Angular 6(提供Angular 6的代码片段,支持TypeScript、HTML、Angular Material ngRx、RxJS和Flex Layout。...你可以通过阅读我们的指南-JavaScript测试:单元测试 vs 功能测试 vs 集成测试-来获得对JavaScript测试的一个概观。...这里有一些针对测试的VS Code插件: Mocha sidebar(利用Mocha库为项目提供单元测试。这个框架帮你直接在代码里跑测试,把错误信息以装饰器形式显示出来。)...Jasmine Code Snippets(针对Jasmine测试框架的代码片段。) Protractor Snippets(针对Protractor端到端测试框架的代码片段。

5.7K10

写代码无BUG,网易云前端单元测试方案总结

前端单元测试的领域也很多,这里主要讲对于前端组件如何进行单元测试,最后会主要介绍下对于 React 组件的一些测试方法总结。...通用测试 单元测试最核心的部分就是做断言,比如传统语言中的 assert 函数,如果当前程序的某种状态符合 assert 的期望此程序才能正常执行,否则直接退出应用。...function sayHello() { return 'hello amd'; } })); 在浏览器/Node 中想要使用 AMD 需要全局引入 RequireJS,对单元测试而言比较典型的问题是在初始化...,而且支持的功能更加清晰,不用考虑如何组合使用的问题,而且下文介绍的 jest 测试框架也是使用这种风格。...另外还有一个比较流行的 E2E 方案 Jest + Puppeteer , 由于 E2E 不属于单元测试范畴,这里不再展开。

9.5K20

写在 2021: 值得关注学习的前端框架和工具库

IceStore[3],淘系Ice团队出品的状态管理库,我在日常业务中使用最多的一个状态管理方案,亮点是基于Immer来实现数据不可变,整体的使用方案类似Dva,state + reducer + effects...它对自己的定义也不包含状态管理的字样,而是有穷状态机( finite state machines[5] )。暂时没有使用过,不做展开介绍。...NgRx[93],很好用的Angular的状态管理方案,写法和Redux非常像,也是action >>> reducer >>> state,所以几乎可以没有什么成本的上手。...秉承了Angular的思想,提供了一整套的集成:和Angular Router的集成:@ngrx/router-store;对于集合类型的适配:@ngrx/entity;副作用管理:@ngrx/effects...E2E测试:Cypress[94] / PlayWright[95],说实话很少能看到业务项目有完备的单元测试和集成测试,更不要说E2E测试了,因为的确要花不少时间。

4.2K10

写在2021: 值得关注学习的前端框架和工具库

IceStore,淘系Ice团队出品的状态管理库,我在日常业务中使用最多的一个状态管理方案,亮点是基于Immer来实现数据不可变,整体的使用方案类似Dva,state + reducer + effects...它对自己的定义也不包含状态管理的字样,而是有穷状态机( finite state machines )。暂时没有使用过,不做展开介绍。...NgRx,很好用的Angular的状态管理方案,写法和Redux非常像,也是action >>> reducer >>> state,所以几乎可以没有什么成本的上手。...秉承了Angular的思想,提供了一整套的集成:和Angular Router的集成:@ngrx/router-store;对于集合类型的适配:@ngrx/entity;副作用管理:@ngrx/effects...E2E测试:Cypress / PlayWright,说实话很少能看到业务项目有完备的单元测试和集成测试,更不要说E2E测试了,因为的确要花不少时间。

2.8K10

Angular vs React 最全面深入对比

无论如何,当你使用Angular时,您至少应该了解RxJS的基本知识。...@ngrx/store @ngrx/store是由Redux启发的Angular的状态管理库,基于由pure reducer进行突变的状态。...Jest(来自Facebook的一个单元测试工具)也同时集成在Create-react-app内部,更方便的让我们进行单元测试。...MobX MobX 是用于管理应用程序状态的替代库。不像Redux那样将状态保存在一个不可变的存储中,它鼓励您仅存储最低限度的必需状态,并从其中获取剩余的数据。...您还需要学习如何编写组件,使用props进行配置和管理内部状态。不需要学习任何新的逻辑结构或循环,因为所有这些都是纯JavaScript。 官方教程是开始学习React的好地方。

3.8K70

盘点那些非常实用的JavaScript测试框架

Snapshot 测试:Jest 提供了快速方便的 Snapshot 测试功能,可以方便的测试 UI 组件的状态。 并行测试:Jest 可以并行的运行测试,加快测试速度。...Chai 是一个功能强大的断言库,如果你需要编写灵活的单元测试,可以考虑使用 Chai。 Jasmine Jasmine 是一个 BDD 测试框架,可用于测试 JavaScript 代码。...它提供了一系列简洁易用的 API,让开发人员可以编写简单的单元测试Jasmine 的主要特点包括: 简洁易用的 API:Jasmine 提供了简洁易用的 API,方便开发人员编写单元测试。...支持 BDD 断言风格:Jasmine 支持 BDD 断言风格,方便开发人员编写描述性的单元测试。 可自定义断言:Jasmine 提供了自定义断言功能,方便开发人员扩展断言函数。...支持异步测试:Jasmine 支持异步测试,方便开发人员编写异步代码的测试用例。 可运行在多种环境:Jasmine 可运行在 Node.js、浏览器等多种环境中,提供了灵活的测试方案。

2K40

如何用 Karma,Jasmine,Webpack 测试 UI 组件系列(一)配置篇

如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 (一) 配置篇为什么要测试 从个人经验来看,测试是防止软件缺陷的最好方法。...单元测试 单元测试是一种测试你的项目中每个最小单元代码的有效手段,是使你的程序思路清晰的基础。 一旦所有的测试通过,这些零散的单元组合在一起也会运行的很好,因为这些单元的行为已经被独立的验证过了。...本文介绍如何使用 Karma,Jasmine,Webpack 编写单元测试代码。...Webpack 和 Babel 的安装和配置 Babel和Webpack的根据使用到的ECMAScript新特性决定是否配置,我的配置如下 Jasmine 的断言库的引入 编写测试用例 因为我司在生成中还在使用...参考 Testing AngularJS with Jasmine and Karma (https://scotch.io/tutorials/testing-angularjs-with-jasmine-and-karma-part

2K150

给2019前端开发的你5个进阶建议~

庆幸的是除了 React 社区,Vue 社区有类似的 Vuex,Angular 社区有 NgRx 也提供了几乎同样的能力,甚至 NgRx 还可以无缝使用 redux-devtools 来调试状态变化。...是纯函数 副作用如何处理,大量样板代码 这三个问题我们是通过自研 iron-redux 库来解决,以下是背后的思考: 如何组织 Action?.../SUCCESS/ERROR 这 3 个action,我们通过 FetchTypes 类型来自动生成对应到 3 个 action 如何组织 Store/Reducer?...reducer 和 view 不必一一对应,应用中同时存在组件树和状态树,按照各自需要去组织,通过 connect 来绑定状态树的一个或多个分支到组件树 通过构造一些预设数据类型来减少样板代码。...Redux 状态如何减少样板代码? 使用原生 Redux,一个常见的请求处理如下。

99210

前端自动化测试探索和实践

下周回来之后述职,心情大好,状态极佳,得到老板们的赞赏。绩效评定棒棒哒,年终奖和普调都没问题。 ❞ 上面的故事都是我 YY 的,如有雷同纯属巧合 ?。 什么是测试? ?...如何选择测试工具? 现在市面上有很多流行的测试工具,但普遍都存在一个问题:「新特性的支持滞后」。 前端测试的框架可谓是百花齐放。...单元测试(Unit Test)有 Mocha, Ava, Karma, Jest, Jasmine 等。...主流测试工具比较 框架 断言 仿真 快照 异步测试 Mocha 默认不支持,可配置 默认不支持,可配置 默认不支持,可配置 友好 Ava 默认支持 不支持,需第三方配置 默认支持 友好 Jasmine...Jasmine Jasmine 是单测框架的“元老”,开箱即用,但是异步测试支持较弱。 Jest Jest 基于 Jasmine, 做了大量修改并添加了很多特性,同样开箱即用,但异步测试支持良好。

4.3K11

作为JavaScript开发人员,这些必备的VS Code插件你都用过吗?

如果你想查看对各种代码检测优缺点的综述,可以来看看我们对代码检测工具的比较。 4....Angular 6:提供Angular 6的代码片段,支持TypeScript、HTML、Angular Material ngRx、RxJS和Flex Layout。...你可以通过阅读我们的指南-JavaScript测试:单元测试 vs 功能测试 vs 集成测试-来获得对JavaScript测试的一个概观。...这里有一些针对测试的VS Code插件: Mocha sidebar:利用Mocha库为项目提供单元测试。这个框架帮你直接在代码里跑测试,把错误信息以装饰器形式显示出来。...Jasmine Code Snippets:针对Jasmine测试框架的代码片段。 Protractor Snippets:针对Protractor端到端测试框架的代码片段。

2.8K10

前端自动化测试工具 overview

前端测试化工具简单汇总和比较 Qunit jquery出的自动化测试库,没什么好说的,可以想象其跟jquery UI及jquery animation等库结局一样,逃脱不了各种被后来的库全方位的比较和“...超越” Mocha && Jasmine Mocha 跟 Jasmine 是目前最火的两个单元测试框架,基本上目前前端单元测试就在这两个库之间选了,下面是这两个库的区别,大家可以根据自己的需求进行选择:...集成度高,自带BBD,spy,方便的异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建,断言方式或者异步等风格相对比较固定 没有自带mockserver, 如果需要这功能的得另外配置...总的来说就是Jasmine功能齐全,配置方便,Mocha灵活自由,自由配置。...,mocha等单元测试框架。

1.3K10

前端自动化测试工具 overview

前端测试化工具简单汇总和比较 Qunit jquery出的自动化测试库,没什么好说的,可以想象其跟jquery UI及jquery animation等库结局一样,逃脱不了各种被后来的库全方位的比较和“...超越” Mocha && Jasmine Mocha 跟 Jasmine 是目前最火的两个单元测试框架,基本上目前前端单元测试就在这两个库之间选了,下面是这两个库的区别,大家可以根据自己的需求进行选择:...集成度高,自带BBD,spy,方便的异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建,断言方式或者异步等风格相对比较固定 没有自带mockserver, 如果需要这功能的得另外配置...总的来说就是Jasmine功能齐全,配置方便,Mocha灵活自由,自由配置。...,mocha等单元测试框架。

2.2K110
领券