Giter VIP home page Giter VIP logo

Comments (4)

nalexn avatar nalexn commented on May 29, 2024

Hey @davisford ,

The "forEach" inspection works the same way as for Stack view. forEach.anyView(0) would not work in your case, forEach.vStack(0) is the correct call, which would return the vStack for the first element of the ForEach. In the same manner, forEach.vStack(1) returns the second one, and so on.

But the error you're observing (viewIndexOutOfBounds) implies that your orgs array is empty. If there were at least one element, you would get an error that ForEach does not contain AnyView (because you have VStack instead)

from viewinspector.

davisford avatar davisford commented on May 29, 2024

Hi @nalexn that makes sense now. I have injected a mock view model in this view's initializer in the test. When the view's .onAppear is called, it populates the orgs array, but this does not appear to be working in a unit test.

I am either mis-understanding something about the eventing in SwiftUI, or it isn't being triggered from the unit test.

from viewinspector.

nalexn avatar nalexn commented on May 29, 2024

The .onAppear gets called only when the view is part of the active view hierarchy. In unit tests, you need to manually inject view into the app's content view. You can check my other project where I do this in the tests: https://github.com/nalexn/clean-architecture-swiftui

Another pitfall here is that after the injection, in the onAppear callback you should obtain a fresh copy of the "sut" view by inspecting the active hierarchy from scratch.

Views are structs, so the view you create in the beginning of the test will eventually be an outdated original version of the updated view in the onAppear callback.

from viewinspector.

davisford avatar davisford commented on May 29, 2024

Thanks @nalexn -- makes sense. I was able to get it working. Appreciate the good info.

from viewinspector.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.