0

我已经安装ember-bootstrap在我的应用程序中。然后,我创建了一个登录表单组件。

在 中app/templates/components/login-form.hbs,有 2 个 Bootstrapinput和 1 个button,分别是:

{{#bs-form onSubmit=(action "login") as |form| }}
    {{#form.group validation=emailValidation}}
        <label for="email">Email</label>
        <input id="email" value={{email}} name="email" class="form-control" oninput={{action (mut email) value="target.value"}} type="text" placeholder="Email" required>
    {{/form.group}}
    {{#form.group validation=passwordValidation}}
        <label for="password">Password</label>
        <input id="password" value={{password}} name="password" class="form-control" oninput={{action (mut password) value="target.value"}} type="password" placeholder="Password" required>
    {{/form.group}}
    {{bs-button defaultText="Login" type="primary" buttonType="submit"}}
{{/bs-form}}

当我在组件中进行集成测试时,它似乎无法识别this.

test('it renders', function(assert) {
  assert.expect(3);
  assert.equal(this.$('input').attr('name'),'email','has Email');
  assert.equal(this.$('input').attr('name'),'password','has Password');
  assert.equal(this.$('button').text(),'Login','has Login');
});

在 中input,我得到了undefined结果。在 Bootstrap中调用组件的输入以form.group用于组件测试的正确方法是什么?

4

1 回答 1

2

我相信您忘记在测试中渲染组件;那就是您需要添加以下内容:

this.render(hbs`{{login-form}}`);

在断言任何事情之前。您还需要更改第二个断言以断言组件中的第二个输入。反正; 我已经复制了您的组件并在以下twiddle中更正了您的测试。我希望它有所帮助。

于 2017-05-20T06:23:26.330 回答