首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Karma中测试$state.go

如何在Karma中测试$state.go
EN

Stack Overflow用户
提问于 2015-11-17 15:44:27
回答 1查看 2.6K关注 0票数 2

我知道这里已经出现了一些$state.go单元测试问题,但似乎没有一个适合我。我有一个简单的控制器逻辑来选择一个状态。

代码语言:javascript
复制
if (true) {
    $state.go('home.default');
} else {
    $state.go('home.new');
}

为了测试哪个状态被击中,我尝试了以下方法:

代码语言:javascript
复制
it('should return a state', function () {
    spyOn($state, 'go');
    $state.go('home.default');
    expect($state.go).toHaveBeenCalledWith('home.default');
});

这总是因为行$state.go('home.default');使测试变得多余,因为我只是调用我想要的状态,然后测试它。我想知道控制器调用的是哪个状态。

我希望考试会是这样的:

代码语言:javascript
复制
it('should return a state', function () {
    spyOn($state, 'go');
    expect($state.go).toHaveBeenCalledWith('home.default');
});

但是这不起作用,因为它没有被调用,即使我在控制器中知道它是,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-07 12:51:18

  1. 在测试文件夹中使用stateMock模块创建新文件。从这个要旨复制代码。
  2. 在试验中: beforeEach(模块(‘stateMock’);beforeEach(函数($state) { state = $state;state.expectTransitionTo('home.default');});它(‘应该返回一个状态’),函数() {/发生了事情并返回true,您希望// $state.go('home.default')应该工作//如果没有发生,则期望返回false和state.expectTransitionTo返回错误});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33761107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档