2016-09-13 6 views
0

Я использую frisby v0.8.5 и jasimine-node. С frisby есть следующий утверждать ожидаемый код статуса возврата HTTP:Как проверить, есть ли код состояния 200 или 201 в тесте Frisby

f = frisby.create(/*stuff....*/); 
... 
... 
f.expectStatus(200); 
f.toss(); 

Это прекрасно работает, если конечная точка имеет один ожидаемый статус, но в некоторых случаях (например, в конечной точке POST) вы можете получить обратно 201 для или 200, если ресурс уже присутствует.

Есть ли способ в frisby проверить наличие нескольких допустимых кодов статуса ответа?

+0

Кажется, вам нужно проверить оба результата, если я правильно понял ваш вопрос, это будет реализация в жасмине: Я бы предложил использовать такой шаблон: var result = myFunction(); var достигнутоSuccessfulStatus = (статус === 200 || результат === 201); ожидаем (достигнутоSuccessfulStatuse) .toBe (true); Я нашел его здесь https://groups.google.com/forum/#!topic/jasmine-js/IyJMTzpzFBc, не знаю, как это сделать в frisby –

ответ

0

Хорошо, нашел простой способ сделать это, используя after() и подходящую функциональную функцию жасмина.

Общая идея заключается в том, что Frisby является асинхронным, вам нужно проверить результат после того, как он был брошен и пойман. Внутри исходного результата вы можете вручную проверить код состояния на регулярное выражение, которое в этом случае равно 200 или 201:

f = frisby.create(/*stuff....*/); 
// ... 
// ... 

f.after(function(err, res, body) { 

    //Look for either a 200 or 201 
    expect(res.statusCode).toMatch(//20[0|1]/); 

}); 

f.toss(); 
0

Вы можете добавить дополнительный метод Firsby lib, путем создания локального файла xyz.coffee, который будет запрашиваться xyz = require "./xyz" там вы можете предоставить:

Frisby = Object.getPrototypeOf(frisby.create()) 

Frisby.expectStatuses = (statuses) -> 
    @current.expects.push => 
    expect(statuses).toContain(@current.response.status) 
    return this 

В конце концов, вы всегда можете скопировать пасту, выше, к вашему spec.coffee файл После все, просто используйте в своем сценарии:

.expectStatuses([200, 201]) 

Это прекрасно работает.

+0

@Ray Вы уже проверили это? – Slavo

+0

У Frisby нет метода 'expectStatuses()'. Только 'expectStatus()' – Ray

+0

@Ray mea culpa - я скорректировал свой ответ – Slavo