博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular4错误提示的说明(一)
阅读量:6828 次
发布时间:2019-06-26

本文共 1657 字,大约阅读时间需要 5 分钟。

hot3.png

错误一:

Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'ng:///DynamicTestModule/ManufacturerListComponent.ngfactory.js'.

这个错误很可能是一个误导,你可能根本没有用到XMLHttpRequest。添加测试命令的参数,可以发现真正的导致错误的原因。

ng test --sourcemaps=false或者npm test --sourcemaps=false或者yarn test --sourcemaps=false

此时错误变成了:

Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '0'. Current value: '12'.

这个错误名称有点长,ExpressionChangedAfterItHasBeenCheckedError。这个错误会在开发模式下的测试时产生,开发模式要求数据模型是稳定的,如果在单个变化检测过程中发生了数据变化就会抛出这个异常。请看下面的代码:

如果一开始datasource.resultsLength等于0,等到datasource从后端获取数据将这个值修改成12,就会抛出这个错误。从逻辑上来说,实际运行的系统就是这样,没有什么错误,在product模式下也不会出错。但是在dev模式下就会出错,所以在测试代码中一开始就将datasource.resultsLength设置成12,然后获取数据之后也是12,就可以消除这个错误。

class HttpDatastoreServiceStub {  findAll(jsonapiObjectType: Manufacturer,     page: PageCursor | PageOffsetLimit | PageNumberSize, sort: SortPhrase[],      filter: FilterPhrase[], params?: any): Observable
> { let lb = MANUFACTURERS_BODY as ListBody
; console.log(page); if (isPageOffsetLimit(page)) { lb.data = lb.data.slice(page.offset, page.limit + page.offset); } return Observable.of(lb); }}@Injectable()class ManufacturerServiceMock { constructor(private _datastore: HttpDatastore) { } getDatasource(): ManufacturerDatasource { let mfds = new ManufacturerDatasource(this._datastore); mfds.resultsLength = 12; return mfds; } }let httpDatastoreServiceStub = new HttpDatastoreServiceStub();

从测试的目的来说,也确实只需验证单个数据模型对应的视图即可。

转载于:https://my.oschina.net/jianglibo/blog/1574261

你可能感兴趣的文章
设置主键的问题
查看>>
关于jQuery UI 使用心得及技巧 - 刘哇勇 - 博客园
查看>>
前端优秀作品展示,JavaScript 版水果忍者
查看>>
HTML 几种特别分割线特效
查看>>
javaWeb学习总结(5)- HttpServletRequest应用
查看>>
[AngularJS] ui-router: named views
查看>>
ShareSDK 微博空间分享
查看>>
WinXP 无线提示“区域中找不到无线网络”的一种可能原因!
查看>>
Windows Store App 旋转中心
查看>>
SQL 返回刚插入数据的ID
查看>>
Ubuntu下deb包的安装方法
查看>>
苹果开发人员账号注冊流程
查看>>
NGINX当中的SSL配置(PEM启动密码免输入)
查看>>
RDIFramework.NET ━ 9.10 岗位(职位)管理 ━ Web部分
查看>>
Eclipse代码注释模板
查看>>
Eclipse安装Freemarker Editor插件
查看>>
ArcGIS10.2.2 Desktop直接连接数据库的具体步骤
查看>>
cd命令(转)
查看>>
php实现工厂模式
查看>>
从最大似然到EM算法浅解
查看>>