javascript - 模拟 Controller 用于 qunit 测试。

标签 javascript unit-testing ember.js qunit ember-qunit

我有一个 mixin 可以帮助我完成工作流程的步骤。基本上它会查看当前步骤是什么,然后基于此执行一些魔法。问题是函数的第一行获取了 this.controllerFor('document') ,而我不明白如何模拟该controllerFor 调用。例如,我知道我可以将 {testing: "123"} 传递到测试中的 .create 中。然后,这将给我 this.get('testing') 但如何模拟 controllerFor 呢?另外,要明确的是,调用controllerFor的唯一原因是我可以获得currentStep

prepare-next.js

setNext: function() {
    let currentStep = this.controllerFor('document').get('currentStep');

    if (currentStep === 'First_step') {
        //do something
    } else {
        //do something else...
    }
    // Bunch more stuff happens...
}

prepare-next-test.js

import Ember from 'ember';
import PrepareNext from 'my-app/mixins/prepare-next';
import { module, test } from 'qunit';

module('mixin:prepare-next');

const PrepareNextObject = Ember.Object.extend(PrepareNext);
let subject;


test('#setNext does all the things', function(assert) {
  subject = PrepareNextObject.create();
  subject.setNext();
  //assert.equal(foo, bar);
});

最佳答案

您可以在测试之前或测试中替换controllerFor方法:

import Ember from 'ember';
import PrepareNext from '../../../mixins/prepare-next';
import { module, test } from 'qunit';

module('mixin:prepare-next');

const PrepareNextObject = Ember.Object.extend(PrepareNext);

let subject;

test('#setNext does all the things', function(assert) {
  assert.expect(2);

  subject = PrepareNextObject.create();
  subject.controllerFor = () => {
    assert.ok(true, 'controllerFor called');
    return {
      get() {
        assert.ok(true, 'Get called');
        return 'First_step';
      }
    }
  };
  subject.setNext();
  //assert.equal(foo, bar);
});

Working demo.

关于javascript - 模拟 Controller 用于 qunit 测试。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625231/

相关文章:

javascript - 如果组件不存在,我可以强制 angular 报错吗?

java - 使用 Mockito 模拟另一个类中的类方法

ember.js - View 中的表单提交事件

javascript - 动态判断Ember组件是否存在?

java - SOAPUI 转移属性(property)

Ember.js:如何从 Ember.Map 查看数据

基于Referrer的Javascript重定向

javascript - 从 HTML/JS 进行简单的操作系统检查

javascript - 通过模板字段打开 NavigateUrl 窗口

unit-testing - 如何在 Go 中获得所有包的代码覆盖率?