我遇到了一个无法确定原因的问题。我在赛普拉斯中定义了以下命令:
Cypress.Commands.add('createUser', (opts, permissions = []) => {
railsRequest('create_user', { user: opts, permissions })
.its('body')
.its('response');
});
Cypress.Commands.add('create', (type, opts) => {
railsRequest('create', { type, opts })
.its('body')
.its('response');
});
Cypress.Commands.add('login', { prevSubject: true }, (subject) => {
railsRequest('login', { id: subject.id })
.its('body')
.its('response')
.as('currentUser');
});
createUser
命令很容易说明,create
命令允许我在服务器上创建伪数据,而login
命令将先前创建的用户登录到服务器,设置会话Cookie。
我遇到以下问题(我在玩时没有断言):
describe('My Spec', () => {
beforeEach(() => {
cy.createUser({}, ['permission_name'])
.login();
});
it('testing', function() {
cy.visit('/');
cy.create('other_resource', { name: 'resource name' }, company_id: this.currentUser.company_id)
.as('resource')
.then(resource => {
cy.visit('/resource');
});
});
});
没什么特别复杂的,但这是发生了什么:
我不明白为什么要注销用户。我添加了cookie调试功能,并看到每个请求都更改了会话cookie,因此会话cookie似乎还可以,但显然不能正常工作。
运行时我们对应用程序本身没有任何问题,所以我不认为这是后端,但是如果有人对正在发生的事情有任何了解,我希望获得一些见识
答案 0 :(得分:0)
好吧,那是我成为Rails赛普拉斯控制器中的白痴。我有一个控制器负责创建数据和处理任何红宝石代码的调用,但是在create
调用中,它正在为其使用的帮助程序设置测试套件,但是负责该操作的方法还正在清除数据库。因此,从本质上讲,该用户已登录,然后当它要求服务器创建虚拟数据时,便擦除了数据库(包括新用户),然后尝试继续。
不用说,将来任何请求都会因为用户不存在而导致重定向到登录页面