1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-18 15:41:17 +00:00

add TestRequest::run(), allows to run async functions

This commit is contained in:
Nikolay Kim 2019-04-12 11:28:57 -07:00
parent 3fb7343e73
commit b4768a8f81
2 changed files with 13 additions and 1 deletions

View file

@ -24,6 +24,7 @@ actix-codec = "0.1.2"
actix-service = "0.3.6" actix-service = "0.3.6"
actix-utils = "0.3.4" actix-utils = "0.3.4"
actix-router = "0.1.2" actix-router = "0.1.2"
actix-rt = "0.2.2"
actix-http = { path = "../actix-http" } actix-http = { path = "../actix-http" }
bytes = "0.4" bytes = "0.4"
@ -31,7 +32,6 @@ futures = "0.1.25"
log = "0.4" log = "0.4"
[dev-dependencies] [dev-dependencies]
actix-rt = "0.2.2"
actix-server = { version = "0.4.1", features=["ssl"] } actix-server = { version = "0.4.1", features=["ssl"] }
actix-connect = { version = "0.1.0", features=["ssl"] } actix-connect = { version = "0.1.0", features=["ssl"] }
actix-http-test = { version = "0.1.0-alpha.3", features=["ssl"] } actix-http-test = { version = "0.1.0-alpha.3", features=["ssl"] }

View file

@ -5,6 +5,8 @@ use actix_http::http::header::{Header, HeaderName, IntoHeaderValue};
use actix_http::http::{HttpTryFrom, Method, Uri, Version}; use actix_http::http::{HttpTryFrom, Method, Uri, Version};
use actix_http::test::{TestBuffer, TestRequest as HttpTestRequest}; use actix_http::test::{TestBuffer, TestRequest as HttpTestRequest};
use actix_router::{Path, Url}; use actix_router::{Path, Url};
use actix_rt::Runtime;
use futures::IntoFuture;
use crate::{FramedRequest, State}; use crate::{FramedRequest, State};
@ -114,6 +116,16 @@ impl<S> TestRequest<S> {
let framed = Framed::new(TestBuffer::empty(), Codec::default()); let framed = Framed::new(TestBuffer::empty(), Codec::default());
FramedRequest::new(req, framed, self.path, self.state) FramedRequest::new(req, framed, self.path, self.state)
} }
/// This method generates `FramedRequest` instance and executes async handler
pub fn run<F, R, I, E>(self, f: F) -> Result<I, E>
where
F: FnOnce(FramedRequest<TestBuffer, S>) -> R,
R: IntoFuture<Item = I, Error = E>,
{
let mut rt = Runtime::new().unwrap();
rt.block_on(f(self.finish()).into_future())
}
} }
#[cfg(test)] #[cfg(test)]