<bdo id='x6vQL'></bdo><ul id='x6vQL'></ul>
<i id='x6vQL'><tr id='x6vQL'><dt id='x6vQL'><q id='x6vQL'><span id='x6vQL'><b id='x6vQL'><form id='x6vQL'><ins id='x6vQL'></ins><ul id='x6vQL'></ul><sub id='x6vQL'></sub></form><legend id='x6vQL'></legend><bdo id='x6vQL'><pre id='x6vQL'><center id='x6vQL'></center></pre></bdo></b><th id='x6vQL'></th></span></q></dt></tr></i><div id='x6vQL'><tfoot id='x6vQL'></tfoot><dl id='x6vQL'><fieldset id='x6vQL'></fieldset></dl></div>
    1. <tfoot id='x6vQL'></tfoot>

      1. <legend id='x6vQL'><style id='x6vQL'><dir id='x6vQL'><q id='x6vQL'></q></dir></style></legend>

        <small id='x6vQL'></small><noframes id='x6vQL'>

        使用 Mockito 2.0.7 模拟 lambda 表达式

        时间:2023-09-25

        <i id='2FVZB'><tr id='2FVZB'><dt id='2FVZB'><q id='2FVZB'><span id='2FVZB'><b id='2FVZB'><form id='2FVZB'><ins id='2FVZB'></ins><ul id='2FVZB'></ul><sub id='2FVZB'></sub></form><legend id='2FVZB'></legend><bdo id='2FVZB'><pre id='2FVZB'><center id='2FVZB'></center></pre></bdo></b><th id='2FVZB'></th></span></q></dt></tr></i><div id='2FVZB'><tfoot id='2FVZB'></tfoot><dl id='2FVZB'><fieldset id='2FVZB'></fieldset></dl></div>

          <tbody id='2FVZB'></tbody>
          <bdo id='2FVZB'></bdo><ul id='2FVZB'></ul>

            <small id='2FVZB'></small><noframes id='2FVZB'>

                <tfoot id='2FVZB'></tfoot>
              • <legend id='2FVZB'><style id='2FVZB'><dir id='2FVZB'><q id='2FVZB'></q></dir></style></legend>
                1. 本文介绍了使用 Mockito 2.0.7 模拟 lambda 表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我想像这样模拟我的存储库中提供的查询:

                  I want to mock a query provided on my repository like this:

                  @Test
                  public void GetByEmailSuccessful() {
                      // setup mocks
                      Mockito.when(this.personRepo.findAll()
                              .stream()
                              .filter(p -> (p.getEmail().equals(Mockito.any(String.class))))
                              .findFirst()
                              .get())
                              .thenReturn(this.personOut);
                      Mockito.when(this.communityUserRepo.findOne(this.communityUserId))
                              .thenReturn(this.communityUserOut);
                  ...
                  

                  我的 @Before 方法如下所示:

                  My @Before method looks like this:

                  @Before
                  public void initializeMocks() throws Exception {
                      // prepare test data.
                      this.PrepareTestData();
                  
                      // init mocked repos.
                      this.personRepo = Mockito.mock(IPersonRepository.class);
                      this.communityUserRepo = Mockito.mock(ICommunityUserRepository.class);
                      this.userProfileRepo = Mockito.mock(IUserProfileRepository.class);
                  }
                  

                  不幸的是,当我运行测试时,我收到了错误:

                  Sadly when I run the test I receive the error:

                  java.util.NoSuchElementException:不存在值

                  java.util.NoSuchElementException: No value present

                  当我双击错误时,它指向第一个 lambda 的 .get() 方法.

                  When I double-click the error it points at the .get() method of the first lambda.

                  你们中是否有人成功地模拟了一个 lambda 表达式并知道如何解决我的问题?

                  Have any of you successfully mocked a lambda expression and know how I can solve my problem?

                  推荐答案

                  没有必要模拟这么深的调用.只需模拟 personRepo.findAll() 并让 Streaming API 正常工作:

                  There's no need to mock such deep calls. Simply mock personRepo.findAll() and let the Streaming API work as normal:

                  Person person1 = ...
                  Person person2 = ...
                  Person person3 = ...
                  List<Person> people = Arrays.asList(person1, person2, ...);
                  when(personRepo.findAll()).thenReturn(people);
                  

                  然后代替

                  .filter(p -> (p.getEmail().equals(Mockito.any(String.class))))

                  只需将 Person 对象上的 email 设置/模拟为预期值.

                  just set/mock email on your Person objects to be the expected value.

                  或者,考虑实现 PersonRepo.findByEmail.

                  这篇关于使用 Mockito 2.0.7 模拟 lambda 表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:使用 PowerMockito 模拟 getClass 方法 下一篇:编写 JUnit 测试用例请求调度程序时出错

                  相关文章

                  最新文章

                  • <bdo id='06XH4'></bdo><ul id='06XH4'></ul>
                2. <small id='06XH4'></small><noframes id='06XH4'>

                3. <i id='06XH4'><tr id='06XH4'><dt id='06XH4'><q id='06XH4'><span id='06XH4'><b id='06XH4'><form id='06XH4'><ins id='06XH4'></ins><ul id='06XH4'></ul><sub id='06XH4'></sub></form><legend id='06XH4'></legend><bdo id='06XH4'><pre id='06XH4'><center id='06XH4'></center></pre></bdo></b><th id='06XH4'></th></span></q></dt></tr></i><div id='06XH4'><tfoot id='06XH4'></tfoot><dl id='06XH4'><fieldset id='06XH4'></fieldset></dl></div>
                  <tfoot id='06XH4'></tfoot>

                    1. <legend id='06XH4'><style id='06XH4'><dir id='06XH4'><q id='06XH4'></q></dir></style></legend>