저는 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 과 같은 문제를 피합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다