8000 GitHub - revvy02/MockNetwork: Library that replicates Roblox remote behavior for testing purposes
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

revvy02/MockNetwork

Repository files navigation

MockNetwork

MockNetwork

Roblox testing library that replicates networking behavior

View docs

Usage

MockNetwork is designed for writing tests for things that have side effects across a network. Examples include things like a networking library, or a player DataStore replication library.

Install using Package Manager

MockNetwork can be installed as a package from Wally

Roblox Remote Behavior

MockNetwork serves to replicate specific behavior of Roblox's RemoteEvent and RemoteFunction instances such as the following:

Queueing
Firing a remote will queue the request on the receiving side until a handler is set or a connection is made

Mutates Instance Keys in Tables
Passing a table that has instances as keys will result in the keys being converted to strings

Mutates Table Keys in Tables
Passing a table that has tables as keys will result in the table being converted to a string with its memory address

Erroring with Cyclic Table Values
Passing a table that has cyclic references as values will result in an error, preventing the data being sent to the server or client

Examples

Using the Server class
Can be used if you want to test behavior for multiple different clients

local server = MockNetwork.Server.new({"user1", "user2"})
local user1, user2 = server:getClient("user1"), server:getClient("user2")
local serverRemoteEvent = server:createRemoteEvent("replicateData")

local user1RemoteEvent = user1:getRemoteEvent("replicateData")
local user2RemoteEvent = user2:getRemoteEvent("replicateData")

serverRemoteEvent:FireClient(user1, "Hello user1!")
serverRemoteEvent:FireClient(user2, "Hello user2!")

-- also demonstrates queueing behavior of remotes

expect(user1RemoteEvent.OnClientEvent:Wait()).to.equal("Hello user1!")
expect(user1RemoteEvent.OnClientEvent:Wait()).to.equal("Hello user2!")

Using MockRemoteEvent
Can be used if you want to just test behavior for a single client

local mockRemoteEvent = MockNetwork.MockRemoteEvent.new("user")

mockRemoteEvent:FireClient("user", "Hello user!")

expect(mockRemoteEvent.OnClientEvent:Wait()).to.equal("Hello user!")

Using MockRemoteFunction
Can be used if you want to just test behavior for a single client

local mockRemoteFunction = MockNetwork.MockRemoteFunction.new("user")
local response

task.spawn(function()
	response = mockRemoteFunction:InvokeClient("user", 1)
end)

mockRemoteFunction.OnClientInvoke = function(num)
	return num * 2
end

expect(response).to.equal(2)

About

Library that replicates Roblox remote behavior for testing purposes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0