Midje icon indicating copy to clipboard operation
Midje copied to clipboard

Prerequisite with dynamic arguments

Open viebel opened this issue 4 years ago • 2 comments

I'd like to be able to define prerequisite with a dynamic argument and access this argument in the mocking value. For instance, I'd like to be able to write something like this:

(defn bar [x])
(defn foo [x]
  (bar x))

(fact
 (foo 2) => 2
 (provided (bar anything) => anything))

The problem in this code is that the anything after the arrow doesn't have the value of the anything before the arrow.

Does my request make sense?

viebel avatar Apr 26 '20 11:04 viebel

Could anyone help on this one?

viebel avatar Oct 01 '20 15:10 viebel

metaconstants might do something similar.

like

(defn bar [x])
(defn foo [x]
  (bar x))

(fact
 (foo 2) => ..some-arg..
 (provided (bar ..some-arg..) => ..some-arg..))

Are you somehow trying to express strong constraints between what flows in and out of subcalls? I generally try to avoid such tests because it doesn't test results but rather implementation, so when you refactor your implementation you have to update all your tests.

philomates avatar Oct 01 '20 15:10 philomates