Clojure 在Midje中清除内部函数调用
我正在测试一个函数,该函数使用来自其他命名空间的另外两个函数Clojure 在Midje中清除内部函数调用,clojure,midje,Clojure,Midje,我正在测试一个函数,该函数使用来自其他命名空间的另外两个函数 (fact "a test" (let [result (function-that-uses-functions-from-other-namespace)] result => truthy)) 我想从其他名称空间中删除函数,但在编写测试时遇到了问题 (fact "a test" (let [result (function-that-uses-functions-from-other-
(fact "a test"
(let [result (function-that-uses-functions-from-other-namespace)]
result => truthy))
我想从其他名称空间中删除函数,但在编写测试时遇到了问题
(fact "a test"
(let [result (function-that-uses-functions-from-other-namespace)]
(function-that-uses-functions-from-other-namespace)
(provided (other-namespace/function1 "parameter") => "stub_response"))
但这种方法似乎不起作用。有什么提示吗?这仅仅是一种情况吗?如中所建议的,在可检查项之前对let进行评估。您可以在后台使用
,
,它不仅会对单个事实,而且会对整个事实
表单执行函数调用:
(fact "a test"
...
(against-background
(other-namespace/function1 "parameter") => "stub_response"))
实际上,这可能也适用于您链接的问题。您可以在后台使用
,它不仅可以删除单个事实的函数调用,还可以删除整个事实的函数调用
(fact "a test"
...
(against-background
(other-namespace/function1 "parameter") => "stub_response"))
实际上,这可能也适用于您链接的问题。尝试不使用let
,因为它会在设置前立即执行函数:
(事实“测试”
(使用来自其他命名空间的函数的函数)=>truthy
(提供(一些内部函数arg1 arg2)=>一些结果
(其他内部函数)=>其他结果)
您只需要将函数stubbedrequire
d。它们可以来自另一个命名空间
(fact "a test"
(let [result (function-that-uses-functions-from-other-namespace)]
result => truthy))
请注意,协议方法不能以这种方式存根。尝试不使用let
,因为它会在设置之前立即执行该功能:
(事实“测试”
(使用来自其他命名空间的函数的函数)=>truthy
(提供(一些内部函数arg1 arg2)=>一些结果
(其他内部函数)=>其他结果)
您只需要将函数stubbedrequire
d。它们可以来自另一个命名空间
(fact "a test"
(let [result (function-that-uses-functions-from-other-namespace)]
result => truthy))
请注意,协议方法不能以这种方式存根。是否使用(先决条件)
?大概是这样的:
(fact "a test"
(prerequisite (other-namespace-function1 "parameter) => "stub_response")
(function-that-uses-functions-from-other-namespace) => truthy))
这应该允许您为您喜欢的任何旧函数指定返回值,当您运行实际事实时,这些值将被重放
看一看。与提供的相比,我更喜欢它,因为它允许我坚持给定的when-then测试风格,仍然使用与实际检查程序相同的语法。它使用(先决条件)
工作吗?大概是这样的:
(fact "a test"
(prerequisite (other-namespace-function1 "parameter) => "stub_response")
(function-that-uses-functions-from-other-namespace) => truthy))
这应该允许您为您喜欢的任何旧函数指定返回值,当您运行实际事实时,这些值将被重放
看一看。与提供的相比,我更喜欢这一点,因为它允许我坚持给定的when-then测试风格,仍然使用与实际检查相同的语法。您能更新您的示例吗?在第二个示例中,您似乎没有在任何地方使用result
,并且似乎调用了同一个函数两次。因此,我不清楚您的第二个代码片段想要实现什么。一般来说,这种结构无法工作,是的,您完全正确,您链接到的问题涵盖了这个问题。您可以更新您的示例吗?在第二个示例中,您似乎没有在任何地方使用result
,并且似乎调用了同一个函数两次。因此,我不清楚您的第二个代码片段想要实现什么。一般来说,这种结构无法工作,是的,你是完全正确的,你链接到的问题涵盖了问题。+1这通常是一种很好的方法,它可以让你非常清楚哪些测试受到存根的影响。+1这通常是一种很好的方法,它可以让你非常清楚哪些测试受到存根的影响。