gpt4 book ai didi

julia - 如何在安全测试集中使用单独的集合时删除代码重复

转载 作者:行者123 更新时间:2023-12-04 08:54:48 24 4
gpt4 key购买 nike

我是 Julia 的新手,我正在尝试为 Genie 编写测试。我正在使用 SafeTestsets。它确实可以帮助我们在不同的集合中单独测试,但是现在有很多重复的代码,因为您无法访问集合的范围之外
例如在下面的例子中,使用 Genie , Genie.Assets正在重复

@safetestset "Assets functionality" begin

@safetestset "Assets paths" begin
using Genie, Genie.Assets

@test include_asset(:css, "foo") == "/css/foo.css"
@test include_asset(:js, "foo") == "/js/foo.js"

@test css_asset("foo") == css("foo") == "/css/foo.css"
@test js_asset("foo") == js("foo") == "/js/foo.js"
end;

@safetestset "Expose settings" begin
using Genie, Genie.Assets

@test js_settings() == "window.Genie = {};\nGenie.Settings = {\"webchannels_autosubscribe\":true,\"server_host\":\"127.0.0.1\",\"webchannels_subscribe_channel\":\"subscribe\",\"server_port\":8000,\"webchannels_default_route\":\"__\",\"webchannels_unsubscribe_channel\":\"unsubscribe\",\"websockets_port\":8001}\n"
end

@safetestset "Embedded assets" begin
using Genie, Genie.Assets

@test channels()[1:18] == "window.Genie = {};"
@test channels_script()[1:27] == "<script>\nwindow.Genie = {};"

@test channels_support() == "<script src=\"/__/channels.js?v=$(Genie.Configuration.GENIE_VERSION)\"></script>"
@test Genie.Router.routes()[1].path == "/__/channels.js"
@test Genie.Router.channels()[1].path == "/__/unsubscribe"
@test Genie.Router.channels()[2].path == "/__/subscribe"

@test favicon_support() == "<link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />"
end

end;

最佳答案

因为@safetestset为每个 TestSet 创建一个新模块,每个人都需要using以与模块相同的方式声明。
它旨在隔离 TestSet s,因此根据设计,每个语句都需要导入它使用的模块。
根据我看到其他人使用 @safetestset 的方式(例如 https://github.com/SciML/DifferentialEquations.jl/tree/master/test ),通常 @safetestset 环绕 include到一个脚本,并确保该脚本独立运行,避免像 https://discourse.julialang.org/t/my-unit-tests-are-interferring-with-each-other/21686 这样的问题.

关于julia - 如何在安全测试集中使用单独的集合时删除代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63890822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com