Giter VIP home page Giter VIP logo

Comments (3)

MichaelChirico avatar MichaelChirico commented on May 12, 2024

deparse() comes with its own headaches (though I do think it's probably the right way to go) -- a minimal-overhead approach is to just use seq_along to number the tests. At least that way the test failures will have unique names.

from patrick.

MichaelChirico avatar MichaelChirico commented on May 12, 2024

I think a good use case to have in mind here is replacing a simple for loop with a patrick test.

With for loop:

for (name in names) {
  test_that(sprintf("works: %s", name), {
    # expectations depending on 'name'
  })
}

replaced with

with_parameters_test_that(
  "works:",
  {
    # expectations depending on 'name'
  },
  name = names
)

A big appeal of the for loop is that names can be a literal & we don't need to store any variables in the test env, nor to repeat ourselves by spelling out names >once.

Whereas the appeal of doing this through patrick is (1) API consistency within a test suite (2) makes it clearer the purpose is to do a templated series of tests (slightly less clear in for loop approach, especially with a bigger {...} body) and (3) obviates the distracting sprintf() test name construction part.

from patrick.

MichaelChirico avatar MichaelChirico commented on May 12, 2024

I think this is the same as a new issue I was about to post:

The more I use patrick() the more I find myself writing code like:

with_parameters_test_that(
  "a test name",
  { some_test_exprs(single_param) },
  .test_name = FOO,
  single_param = FOO
)

This feels pretty redundant. It seems like using .test_name = params[[1]] when length(params) == 1 is a reasonable default.

Alternatively, accepting syntax like

single_param = FOO, .test_name = single_param (or even "single_param" to avoid NSE headaches)

would generalize to higher-cardinality tests where .test_name is still drawn directly from one of the test parameters

from patrick.

Related Issues (14)

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.