Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@automock/jest
Advanced tools
Automock optimizes the unit testing process by providing a virtual, isolated environment and automated mock generation, enabling developers to create efficient test suites and enhance their overall testing experience.
↗️ Documentation ↗️ API Reference
🚀 Zero-Setup Mocking - Automatically generate mock objects, eliminate manual setup, reduce boilerplate code.
🔍 Type-Safe Mocks - Leverage TypeScript's power with mocks that retain the same type as real objects.
📄 Consistent Tests Structure - Test suites will follow a consistent syntax and structure, making them easier to read and maintain.
📈 Optimized Performance - By bypassing the actual DI container, unit tests run significantly faster.
🌐 Community & Support - Join a growing community of developers.
To fully integrate Automock into your testing and dependency injection framework, you need to install two
packages: @automock/jest
, and the corresponding DI framework adapter.
$ npm i -D @automock/jest
DI Framework | Package Name |
---|---|
NestJS | @automock/adapters.nestjs |
Inversify | @automock/adapters.inversify |
For example:
$ npm i -D @automock/jest @automock/adapters.nestjs
No further configuration is required.
Take a look at the following example:
Consider the following UserService
class:
export class Database {
async getUsers(): Promise<User[]> { ... }
}
export class UserService {
constructor(private database: Database) {}
async getAllUsers(): Promise<User[]> {
return this.database.getUsers();
}
}
Let's create a unit test for this class:
import { TestBed } from '@automock/jest';
import { Database, UserService } from './user.service';
describe('User Service Unit Spec', () => {
let userService: UserService;
let database: jest.Mocked<Database>;
beforeAll(() => {
const { unit, unitRef } = TestBed.create(UserService).compile();
userService = unit;
database = unitRef.get(Database);
});
test('should return users from the database', async () => {
const mockUsers: User[] = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }];
database.getUsers.mockResolvedValue(mockUsers);
const users = await userService.getAllUsers();
expect(database.getUsers).toHaveBeenCalled();
expect(users).toEqual(mockUsers);
});
});
With the use of the TestBed
, an instance of the UserService
class can be created with mock objects automatically
generated for its dependencies. During the test, we have direct access to the automatically generated mock object for
the Database
dependency (database). By stubbing the getUsers()
method of the database mock object, we can define
its behavior and make sure it resolves with a specific set of mock users.
Automock improves upon the existing unit testing procedures of DI frameworks by creating a virtual DI container. There is an array of advantages to this change:
Speed: By simulating the actual DI container in the testing environment, Automock speeds up execution times.
Efficiency: Developers are therefore able to focus on writing the test logic instead of grappling with the complexities of test setup.
Isolation: Each test runs independently with mock implementations automatically provided, creating a streamlined and interference-free testing environment.
↗️ For a full Step-by-Step example
Distributed under the MIT License. See LICENSE
for more information.
FAQs
Unknown package
The npm package @automock/jest receives a total of 47,299 weekly downloads. As such, @automock/jest popularity was classified as popular.
We found that @automock/jest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.