2014-01-28 6 views
1

новичка для тестирования с помощью Javascript. Я использую мокко, но Луис мудро ничего не сказал об этом вопросе, характерном для Мокки. У меня есть приложение Node, который имеет несколько страниц, видимых анонимный пользователь, и некоторые, что вы не должны быть в состоянии увидеть, если вы не вошли в системе. Так что я, как очень простое начало,Отрицательные утверждения в Supertest

describe('User Access', function(){ 
it('should allow anyone to access the help desk (about page)', function(done){ 
    request(host) 
    .get('/') 
    .expect(200, done); 
}), 
it('should allow anyone to access the contact page', function(done){ 
    request(host) 
    .get('/contact') 
    .expect(200, done); 
}), 
//initially we were expecting 404, we need anything BUT 200. 
it('should NOT allow anonymous user to access the Training Material page', function(done){ 
    request(host) 
    .get('/training') 
    .expect(404, done); 
}), 

и т.д.

Это сработало, изначально. ОДНАКО, разработчик изменил недоступные страницы до статуса 302 и перенаправил их в корень веб-приложения. Таким образом, чтобы обеспечить гибкость dev, насколько он реализует это ограничение, я хотел бы изменить это на отрицательное утверждение. Итак, используя синтаксис Mocha, как мне «ожидать» ответа на что-нибудь, НО 200?

+1

Вы знаете, '' request (...). Get (...). Expect (...); '' не является чем-то, что присуще Mocha. Похоже, вы используете supertest для обеспечения этой функциональности. Если я ошибаюсь, то, пожалуйста, удалите тег, который я добавил, и отредактируйте свой вопрос, чтобы сообщить нам, откуда эта функция. – Louis

+0

Спасибо, Луис. Ты прав. Ред. – TerminalDilettante

ответ

1

docs here говорят, что вы можете передать пользовательскую функцию утверждения, которая получает объект ответа, возвращая значение из этой функции, означает, что утверждение не выполняется, т.е.

.expect(function(res){ 
    if(res.status == 200){ 
     return "we dont like 200!"; 
    } 
}) 
+0

Странно, этот подход не работает. Если я тестирую какой-либо конкретный код ответа (например, 302 сейчас, или 404 или 200), тест возвращается в разумное время (менее 200 мс). Однако выполнение этого кода точно так же, как написано, приводит к тайм-ауту кода. – TerminalDilettante

Смежные вопросы