我正在使用 ngxs 来管理我的应用程序的状态。
@State<EmployeesStateModel>({
name: 'employees',
defaults: {
// ...
}
})
@Injectable({
providedIn: 'root'
})
export class EmployeesState {
constructor(private employeesService: EmployeesService) {
}
@Action(GetEmployeesList)
async getEmployeesList(ctx: StateContext<EmployeesStateModel>, action: GetEmployeesList) {
const result = await this.employeesService
.getEmployeeListQuery(0, 10).toPromise();
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白如何使用 jest 来模拟EmployeesService测试中的依赖关系。与 NGXS 测试相关的文档也没有提供任何示例。
我刚刚开始测试角度/节点应用程序,所以我不知道我在做什么。
我按照从这个 SO 问题中学到的知识进行了以下测试。
describe('EmployeesStateService', () => {
let store: Store;
let employeesServiceStub = {} as EmployeesService;
beforeEach(() => {
employeesServiceStub = {
getEmployeeListQuery: jest.fn()
};
TestBed.configureTestingModule({
imports: …Run Code Online (Sandbox Code Playgroud) 我目前在 Clion 上有两个使用 cmake 的 C 项目。其中一个项目名为“sharedLibsDemo”,我试图在该项目中创建一个共享库。在另一个项目中,我想使用由“共享”项目创建的库。
目前,在“sharedLibsDemo”项目中,我有以下 cmake:
cmake_minimum_required(VERSION 3.7)
project(sharedLibsDemo)
set(CMAKE_C_STANDARD 11)
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")
set(SOURCE_FILES shared.c shared.h main.c)
add_library(shared SHARED ${SOURCE_FILES})
include(GenerateExportHeader)
GENERATE_EXPORT_HEADER(shared # generates the export header shared_EXPORTS.h automatically
BASE_NAME shared
EXPORT_MACRO_NAME SHARED_EXPORTS
EXPORT_FILE_NAME shared_EXPORTS.h
STATIC_DEFINE SHARED_EXPORTS_BUILT_AS_STATIC)
set(EXEC_FILES main.c)
add_executable(myexe ${EXEC_FILES})
target_link_libraries(myexe shared)
Run Code Online (Sandbox Code Playgroud)
但是,此 cmake 仅创建shared_EXPORTS.h、libshared.dll 和 libshared.dll.a` 文件。我设法使用 Mingw 本身创建 .lib 文件,并将所有这些文件(包括源代码的 .h 文件)放入一个文件夹中,并将该文件夹放在第二个项目的根文件夹中以便使用它。
但是,我到处寻找将库链接到第二个项目的可执行文件的方法。cmake 本身的文档假设我拥有大量的知识,但我却没有。是否有任何命令列表可以用来最终链接我的库。我已经尝试过“使用 find_package() 或 target_link_libraries”的通用答案,但无济于事。
以下为内容shared.h:
#include "shared_EXPORTS.h"
#ifndef SHAREDLIBSDEMO_LIBRARY_H
#define SHAREDLIBSDEMO_LIBRARY_H
void SHARED_EXPORTS sharedHello(void);
#endif
Run Code Online (Sandbox Code Playgroud)
根据@Shmuel H的建议。我将 …
我有一个通过 Visual Studio 开始构建的 asp.net 核心应用程序,通常当我按 F5 或在 Visual Studio 中按调试按钮时它可以正常工作。
但是,如果我尝试dotnet run从命令行使用,它仍然可以工作并开始侦听默认端口 5000(我假设这是 kestrel 侦听)。

但是,如果我尝试使用http://localhost:5000通过任何浏览器访问该页面,我只会收到错误消息,提示无法连接。我知道如果我从 Visual Studio 运行,它会自动将我的应用程序置于 IIS 之后,但我不明白为什么如果应用程序只是自托管,它就不起作用。
我想将我的项目移动到 linux 环境,这是现在似乎阻止我的唯一事情。我已经测试过通过 cli 创建新的 dotnet 应用程序,如果我尝试通过浏览器访问,这些应用程序可以正常工作,但我在 VS 中创建的这个特定应用程序似乎不起作用。
我的dotnet --version回报 1.0.4
因此,要添加到下面 Sanket 的答案中,我还找出了我的应用程序仅在我将其设置ASPNETCORE_ENVIRONMENT为“开发”时才能运行的真正原因。
事实证明,我已经设置了一个测试邮件服务,仅当我的环境是这样的开发时才进行配置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,
WorldContextSeedData seeder)
{
if (env.IsEnvironment("Development"))
{
app.UseDeveloperExceptionPage();
loggerFactory.AddDebug(LogLevel.Information);
}
}
Run Code Online (Sandbox Code Playgroud)
但是在我的一个控制器中,我在没有检查环境的情况下初始化了邮件服务,如下所示:
public AppController(IMailService mailService, IConfigurationRoot config, WorldRepository repository, ILogger<AppController> logger, IHostingEnvironment env)
{
_env = …Run Code Online (Sandbox Code Playgroud) angular ×1
asp.net-core ×1
c ×1
c# ×1
clion ×1
cmake ×1
dll ×1
jestjs ×1
ngxs ×1
typescript ×1
unit-testing ×1