首页 > 其他分享 >ZGRPC - A Unit Test Failure

ZGRPC - A Unit Test Failure

时间:2024-05-09 22:24:20浏览次数:12  
标签:err stream Internal req Failure fakeDb Test Id Unit

 

func testUpdateTasksUnavailableDb(t *testing.T) {
    // Arrange
    conn, c := newClient(t)
    defer conn.Close()

    newDb := NewFakeDb(IsAvailable(false))
    *fakeDb = *newDb

    // Clear all the fields in fakeDb.d.tasks except Id.
    requests := []*pb.UpdateTasksRequest{
        {Id: 0}, {Id: 1}, {Id: 2},
    }

    // Act
    stream, err := c.UpdateTasks(context.TODO())
    if err != nil {
        t.Errorf("unexpected error: %v", err)
    }

    for _, req := range requests {
        stream.Send(req)
    }

    _, err = stream.CloseAndRecv()
    fakeDb.Reset()

    // Assert
    if !errorIs(err, codes.Internal, errorNoDatabaseAccess) {
        t.Errorf("expected Internal, got %v", err)
    }
}

This test failed:

=== RUN   TestRunAll/UpdateTasksTests/TestUpdateTasksUnavailableDb
    server_test.go:306: expected Internal, got <nil>

 

The assert statement should be after the stream.Send(req) statement, because once the request is sent, the update operation will be made on the server side.

func testUpdateTasksUnavailableDb(t *testing.T) {
    // Arrange
    conn, c := newClient(t)
    defer conn.Close()

    newDb := NewFakeDb(IsAvailable(false))
    *fakeDb = *newDb

    // Clear all the fields in fakeDb.d.tasks except Id.
    requests := []*pb.UpdateTasksRequest{
        {Id: 0}, {Id: 1}, {Id: 2},
    }

    // Act
    stream, err := c.UpdateTasks(context.TODO())
    if err != nil {
        t.Errorf("unexpected error: %v", err)
    }

    for _, req := range requests {
        if err := stream.Send(req); err != nil {
            // Assert
            if !errorIs(err, codes.Internal, errorNoDatabaseAccess) {
                t.Errorf("expected Internal, got %v", err)
            }
        }
    }

    _, _ = stream.CloseAndRecv()
    fakeDb.Reset()
}

It passed after the modification:

--- PASS: TestRunAll/UpdateTasksTests/TestUpdateTasksUnavailableDb (0.00s)

 

标签:err,stream,Internal,req,Failure,fakeDb,Test,Id,Unit
From: https://www.cnblogs.com/zhangzhihui/p/18183189

相关文章

  • TestMarkdown
    VSCode实时预览还需要执行Markdown:OpenPreviewtotheSide命令来实现。在命令窗口输入Markdown:OpenPreviewtotheSide命令---#一级标题##二级标题###三级标题####四级标题#####五级标题######六级标题====创建脚注格式类似这样[^RUNOOB]。......
  • TestMarkdown1
    VSCode实时预览还需要执行Markdown:OpenPreviewtotheSide命令来实现。在命令窗口输入Markdown:OpenPreviewtotheSide命令一级标题二级标题三级标题四级标题五级标题六级标题====创建脚注格式类似这样[^RUNOOB]。斜体文本斜体文本粗体文本粗体文本......
  • pytest + yaml 框架 -69.新增depend 关键字,导入其它yaml用例
    前言有小伙伴提到,test_a.yml中已经写了几个流程,test_b.yml中希望能接着test_a.yml去写用例,于是就需要先导入test_a.yml用例。为了满足此需求,v1.6.3版本在config中新增depend关键字。需求场景test_a.yml中已经写了一些用例config:variables:x:helloy:wo......
  • Airtest部署IOS测试
    **!17一、Airtest部署IOS测试:!**https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/README_zh.mdps:”若访问http://127.0.0.1:8100/inspector报错unknown...........,不用管直接跳过这一步操作,不影响airtest的连接,只要http://127.0.0.1:8100/status......
  • docker_test
    WelcometoHexo!Thisisyourveryfirstpost.Checkdocumentationformoreinfo.IfyougetanyproblemswhenusingHexo,youcanfindtheanswerintroubleshootingoryoucanaskmeonGitHub.QuickStartCreateanewpost$hexonew"MyNewPost&q......
  • 2024 ICPC National Invitational Collegiate Programming Contest, Wuhan Site
    目录写在前面IBKFMEDC写在最后写在前面补题地址:https://codeforces.com/gym/105143正式赛全程犯大病打铜了呃呃,以下按个人向难度排序。AIEEEEE!忍者为何!队长=san实际战犯!罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚......
  • java测试框架Junit5进阶知识点
    声明参数化导入注解<!--junit5新的编程和扩展模型--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version>......
  • 解决HtmlUnit执行JS报错提示ScriptException
    问题描述HtmlUnit作为一款比Selenium更轻量的HeadLess的Java版本浏览器模拟器,不需要在服务器上安装部署浏览器及其Driver程序。但是,众所周知,HtmlUnit对JS脚本的支持并不是很有话,GitHub中大部分的issue都和JS执行错误有关。笔者在实际使用(HtmlUnit4.1.0版本)过程中也遇到了JS执......
  • markdownTest
    欢迎来到我的博客这是一篇简短的文章这里是一些介绍性的文本。Markdown非常适合写作,因为它的语法既简单又强大。主要特点易于学习:Markdown的语法非常直观。灵活性:适用于各种文档和在线发布。广泛支持:许多平台和编辑器都支持Markdown。代码示例defhello_world():pr......
  • 银弹:为了避免项目的成员为了一些问题争执不休,公司发明了银弹(Silver Bullet)这一工具。
    我的答案:【第二组】答:银弹作为一种工具,其目的是为了在项目团队中解决争议,确保项目能够继续前进。然而,是否真的有用,需要从多个角度进行考量:团队沟通与协作:银弹提供了一种强制性的解决方案,可以在一定程度上减少无休止的争论,促使团队成员快速做出决策。这在某些情况下可以提......