作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
具有以下 Controller 和测试:
应用程序/ Controller /application.js
import Controller from '@ember/controller';
import { action } from '@ember/object';
export default class ApplicationController extends Controller {
flag = false;
@action
raiseFlag() {
this.flag = true;
}
@action
async raiseFlagAsync() {
await new Promise(resolve => setTimeout(resolve, 1000));
this.flag = true;
}
}
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Controller | application', function(hooks) {
setupTest(hooks);
test('it raises flag', function(assert) {
let controller = this.owner.lookup('controller:application');
assert.equal(controller.flag, false);
controller.send('raiseFlag');
assert.equal(controller.flag, true);
});
test('it raises flag asyncronously', async function(assert) {
let controller = this.owner.lookup('controller:application');
assert.equal(controller.flag, false);
await controller.send('raiseFlagAsync');
assert.equal(controller.flag, true);
});
});
最佳答案
这里的诀窍是不要使用 send
!通常我会使用 send
仅当您需要在路由链中冒泡操作时。它有点旧概念,它没有返回值。所以await controller.send
不管用。
您应该直接调用该操作:
test('it raises flag asyncronously', async function(assert) {
let controller = this.owner.lookup('controller:application');
assert.equal(controller.flag, false);
await controller.raiseFlagAsync();
assert.equal(controller.flag, true);
});
关于javascript - Ember 辛烷值 : Unit testing async action on controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881057/
具有以下 Controller 和测试: 应用程序/ Controller /application.js import Controller from '@ember/controller'; im
我是一名优秀的程序员,十分优秀!