Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojure with_redefs中使用给定参数检查至少调用一次模拟函数?_Clojure_Clojure.spec - Fatal编程技术网

如何在clojure with_redefs中使用给定参数检查至少调用一次模拟函数?

如何在clojure with_redefs中使用给定参数检查至少调用一次模拟函数?,clojure,clojure.spec,Clojure,Clojure.spec,如果不调用测试服务/流程,我在下面编写的测试不会失败。它也不会检查URL和参数是否正确 (deftest main-func-test (let [event {:a 123}] (with-redefs [test-service/process (fn [url params] response)] (is (= :success (main/main-func event))))) 在ruby中,它很简单 expect(test_ser

如果不调用测试服务/流程,我在下面编写的测试不会失败。它也不会检查URL和参数是否正确

(deftest main-func-test
    (let [event {:a 123}]
      (with-redefs
        [test-service/process (fn [url params] response)]
        (is (= :success (main/main-func event)))))
在ruby中,它很简单

expect(test_service).to receive(:process).with(url, params).and_return(response)

如何检查在Clojure中是否至少使用两个参数URL和参数调用了一次测试服务/流程?

您可以在模拟函数中捕获参数:

(deftest main-func-test
    (let [event {:a 123}
          args (atom nil)]
      (with-redefs
        [test-service/process (fn [url params] 
                                 (reset! args [url params])
                                 response)]
        (is (= :success (main/main-func event)))
        (is (= [expected-url expected-params] @args)))

您可以在模拟函数中捕获参数:

(deftest main-func-test
    (let [event {:a 123}
          args (atom nil)]
      (with-redefs
        [test-service/process (fn [url params] 
                                 (reset! args [url params])
                                 response)]
        (is (= :success (main/main-func event)))
        (is (= [expected-url expected-params] @args)))

@阿什,请别忘了将这个问题标记为已回答@阿什,请别忘了将这个问题标记为已回答!