所以,我正在尝试使用Twitter风格的URL语法,允许用户转到example.com/quaunaut
以用户名'quaunaut'访问用户的用户页面。我能够通过以下方式实现这一目标:
应用/ router.js
export default Router.map(function() {
this.route('users.show', { path: '/:user_username' });
});
应用/路由/用户/ show.js
export default Ember.Route.extend({
model: function(params) {
return this.store.find('user', { username: params.user_username }).then(function(result) {
return result.get('firstObject');
});
},
serialize: function(model) {
return { user_username: model.get('username') };
}
});
现在,当通过ember s
直播或运行时,这非常有效。但是,在测试中,似乎由于某种原因无法解决。
var application, server, USERS;
USERS = {
'example1': [{
id: 1,
username: 'example1'
}],
'example2': [{
id: 2,
username: 'example2'
}]
};
module('Acceptance: UsersShow', {
beforeEach: function() {
application = startApp();
server = new Pretender(function() {
this.get('/api/users', function(request) {
return [
201,
{ 'content-type': 'application/javascript' },
JSON.stringify(USERS[request.queryParams.username])
];
});
});
},
afterEach: function() {
Ember.run(application, 'destroy');
server.shutdown();
}
});
test('visiting users.show route', function(assert) {
visit('/example1');
andThen(function() {
assert.equal(currentPath(), 'users.show');
assert.equal(find('#username').text(), 'example1');
});
});
这导致以下测试结果:
Acceptance: UsersShow: visiting users.show route
✘ failed
expected users.show
✘ failed
expected example1
那么,为什么currentPath()
没有解决的任何想法?如果你也有更好的方法来实现我在这里要做的事情,我当然愿意接受它。
答案 0 :(得分:0)
您的visit
语法不是很正确,应该是:
test('visiting users.show route', function(assert) {
visit('/example1').then(function() {
assert.equal(currentPath(), 'users.show');
assert.equal(find('#username').text(), 'example1');
});
});