provideMockMcpUi
The provider override that mirrors provideMcpUi with a MockAdaptor behind it.
provideMockMcpUi(args?: MockMcpUiArgs): ProvideMockMcpUiResult
provideMockMcpUi() gives you the providers that a widget needs, and the
MockAdaptor behind them.
import { provideMockMcpUi } from "ng-mcp-ui/testing";
const { providers, adaptor } = provideMockMcpUi({
hostContext: { theme: "dark" },
toolResponses: { cast_vote: { total: 4 } },
});
Returns
| Member | Type | Purpose |
|---|---|---|
providers |
EnvironmentProviders |
Pass to your test injector. |
adaptor |
MockAdaptor |
Drive the host and read the call log. |
The arguments are the same as the arguments of MockAdaptor.
In a test
The providers work in a bare Angular injector. You need no TestBed, and no Zone.js.
const { providers, adaptor } = provideMockMcpUi({ hostContext: { theme: "dark" } });
const injector = createEnvironmentInjector([providers], parentInjector);
const layout = runInInjectionContext(injector, () => injectLayout());
expect(layout().theme).toBe("dark");
adaptor.pushHostContext("theme", "light");
expect(layout().theme).toBe("light");
Each inject* function needs an injection context, therefore wrap the call in
runInInjectionContext.
Why it works
Every inject* function reads the MCP_ADAPTOR token, and none of them reads a global. Therefore
one provider override replaces the host for the whole widget.
provideMockMcpUi() is a pure function. It touches no window, so it also runs under SSR and in a
plain Node test.