#mocking #django #testing

django-query

模拟 Django 风格端点的工具

5 个版本

0.2.1 2022 年 6 月 1 日
0.1.3 2022 年 4 月 11 日
0.1.2 2022 年 4 月 5 日
0.1.1 2022 年 4 月 5 日
0.1.0 2022 年 4 月 5 日

#1347 in 异步


用于 2 crates

MIT/Apache

175KB
4K SLoC

django-query

一组创建 Django 风格模拟端点的工具。基本用法是对您想模拟具有数据库的类型进行注解,派生必要的特性和创建 Endpoint 以提供可排序、可过滤的数据库。

示例用法

#[derive(Filterable, IntoRow, Sortable)]
struct Foo {
    #[django(sort, op(lt, gt))]
    a: i32,
    #[django(sort, op(icontains, iexact))]
    b: String,
}

#[tokio::test]
fn simple_test() {
    let server = MockServer::start().await;
    
    // create a Vec of struct Foo here, and optionally 
    // wrap it in an Arc. 
    
    // Now serve our mock database with wiremock
    Mock::given(matchers::method("GET"))
         .respond_with(Endpoint::new(foo_table, Some(&server.uri())));
    
    // And now we can make requests from our code like
    reqwest::get(&format!("{}?limit=5&offset=5&b__icontains=apple&ordering=-a"))
       .await
       .expect("error getting response")
       .json()
       .await
       .expect("error parsing response");
    // which will perform
    //  - pagination (5 responses, offset by 5)
    //  - filtering (only array members whose b member contains apple,
    //    case insensitively)
    //  - sorting (the results will be in decreasing order of the a
    //    member)
}

它与 persian-rugclone-replace 集成,以提供可变对象的互连集合。

许可证

此代码可在 Apache-2.0MIT 许可证 下使用。

依赖项

~12–16MB
~298K SLoC