Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

C++ Automatic Mocks Injector

NotificationsYou must be signed in to change notification settings

cpp-testing/mocks_injector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ Automatic Mocks Injector

C++ Automatic Mocks Injector is C++14 header only library providing following functionality:

  • Automatically create required mocks
  • Automatically inject mocks to tested classes via constructor
  • Automatically register for required destructor's in case of smart pointers (supports testing of unique_ptr)
  • UsesHippoMocks as Mocking library
  • UsesDI as Dependency Injection library

Unit Tests

#include<string>#include<memory>#include<utility>structilogger {virtual~ilogger() { };virtualvoidlog(const std::string&) = 0; };structilogic {virtual~ilogic() { };virtualvoiddo_it() = 0; };classexample {public:example(const std::shared_ptr<ilogger>& logger          , std::unique_ptr<ilogic> logic          ,const std::string& text)        : logger_(logger)        , logic_(std::move(logic))        , text_(text)    { }intrun() {        logic_->do_it();        logger_->log(text_);return0;    }private:    std::shared_ptr<ilogger> logger_;    std::unique_ptr<ilogic> logic_;    std::string text_;};#include<mocks_injector.hpp>intmain() {namespacedi= boost::di;//1. create mocks injector and example classauto _ = di::make_injector<di::mocks_provider>();//2. set up expectationsEXPECT_CALL(_, ilogic::do_it);EXPECT_CALL(_, ilogger::log).With("hello world");//3. run tests    example sut{_, _,"hello world"};assert(0 == sut.run());}

Integration Tests

structlogic : ilogic {voiddo_it()override { } };classapp {public:app(std::shared_ptr<example> e)        : example_(e)    { }intrun() {return example_->run();    }private:    std::shared_ptr<example> example_;};#include<mocks_injector.hpp>intmain() {namespacedi= boost::di;//1. create mocks injector with dependenciesauto mi = di::make_injector<di::mocks_provider>(        di::bind<std::string>.to("hello world")      , di::bind<ilogic, logic>// inject real logic    );//2. set up expectationsEXPECT_CALL(mi, ilogger::log).With("hello world");//3. create example class and run itassert(!mi.create<app>().run());}

License

Distributed under theBoost Software License, Version 1.0.

About

C++ Automatic Mocks Injector

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp