余烬组件集成测试:' link-to '为空
Ember Component Integration Tests: `link-to` href empty
我正在尝试编写一个组件集成测试,就像这篇博客文章一样,但是我的组件有一个link-to
到一个动态路由,并且href
属性没有被填充。以下是我要做的事情的简化版本。
我的组件模板:
{{#link-to "myModel" model}}
下面是我测试的相关部分:
this.set('model', {
id: 'myId',
name: 'My Name'
});
this.render(hbs`
{{my-component model=model}}
`);
assert.equal(this.$('a').attr('href'), '/myModel/myId'); // fails
呈现link-to
,只是没有href
属性。如果我在测试中记录HTML,它看起来像:
<a id="ember283" class="ember-view">My Name</a>
是否有什么我需要做我的"模型"得到link-to
有一个href?我试图查看十一月link-to
的测试,并找到了测试的这一部分,这基本上是我正在做的-提供一个具有id
键集的POJO。什么好主意吗?
DEBUG: -------------------------------
DEBUG: Ember : 1.13.8
DEBUG: Ember Data : 1.13.10
DEBUG: jQuery : 1.11.3
DEBUG: -------------------------------
结果是你可以在测试设置中查找路由器并告诉它开始路由,它就会工作。@rwjblue:
// tests/helpers/setup-router.js
export default function({ container }) {
const router = container.lookup('router:main');
router.startRouting(true);
}
// tests/integration/components/my-component-test.js
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
import setupRouter from '../../helpers/setup-router';
moduleForComponent('my-component', 'Integration | Component | my component', {
integration: true,
setup() {
setupRouter(this);
}
});
这是如何在Ember中做到的> 3
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
module('Integration | Component | my-component', function (hooks) {
setupRenderingTest(hooks);
test('it has a link', async function (assert) {
this.owner.lookup('router:main').setupRouter();
await render(hbs`{{my-component}}`);
assert.equal(this.element.querySelector('a').getAttribute('href'), 'some-url');
});
});
如果你只是想检查href
是ok的,它可以更好地使用setupRouter
而不是startRouting
。startRouting
尝试处理到初始URL的初始转换,这可能会有问题。
// tests/helpers/setup-router.js
export default function({ container }) {
const router = container.lookup('router:main');
router.setupRouter();
}
https://github.com/emberjs/ember.js/blob/d487061228a966d8aac6fa94a8d69abfc3f1f257/packages/ember-routing/lib/system/router.js L202
你使用的是哪个版本的Ember ?我记得以前看到过这个,现在它似乎在我的应用程序中工作(虽然我使用1.13.8)。
似乎在我的应用程序中添加了href,并且基于此计算属性,如果tagName
是"a",它应该绑定到视图。
除了升级Ember之外,最好创建一个Ember -fiddle或repro,如果它仍然存在,则提交一个错误。
您可能还想看看https://github.com/intercom/ember-href-to.
- 如果文本字段为空,则使用JavaScript应用CSS样式
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如果localstorage为空,则显示欢迎消息
- 使用 jQuery 检查所有值是否为空或已填充
- 如果值为空,如何设置输入的默认值?jQuery
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 在MVC 4中,对Controller的Ajax调用为空
- Spring Ajax列表返回,但对象为空
- 输入文本框为空时的阻止按钮asp.网络表单
- $_POST变量为空
- 如果数据为空,Ajax加载不会停止
- 边框颜色是't如果输入为空,则更改
- 如何在输入为空时停止发送
- 如果用户没有更改,则表单值为空
- 在jquery中获取文本输入val始终为空
- 即使 ng 模型有值,也使输入字段为空
- 检查文本区域是否为空总是返回false
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 当我在 Emberjs 中使用 {{link-to}} 中的 id 刷新 url 时,子出口变为空
- 余烬组件集成测试:' link-to '为空