我对在Jest中嘲笑如何对实现进行单元测试感到困惑.问题是我想模仿不同的预期行为.
有没有办法实现这个目标?因为导入只能在文件的顶部,并且能够模拟在导入之前必须声明的内容.我也尝试传递一个本地函数,所以我可以覆盖行为,但是jest抱怨你不允许传递任何本地函数.
jest.mock('the-package-to-mock', () => ({
methodToMock: jest.fn(() => console.log('Hello'))
}));
import * as theThingToTest from '../../../app/actions/toTest'
import * as types from '../../../app/actions/types'
it('test1', () => {
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
it('test2', () => {
//the-package-to-mock.methodToMock should behave like something else
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
Run Code Online (Sandbox Code Playgroud)
在内部你可以想象theThingToTest.someAction()使用the-package-to-mock.methodToMock
我正在四处寻找如何在我的应用程序启动时检查设备上是否启用了网络或GPS.如果它们被禁用,则提示用户启用它.
这在React-native中是否可行?是否有任何类或工具可以帮助这种类型的对话框?
我在字符串和空格方面遇到问题。在 package.json 中创建用于运行命令的别名时(它会失败,因为在第一个空格处剪切命令)。
{
"scripts": {
...
"react-native-debugger:osx": "/Applications/React Native Debugger.app/Contents/MacOS/React Native Debugger"
...
}
}
Run Code Online (Sandbox Code Playgroud)
我需要这个,以便能够自动启动环境来开发反应本机应用程序,并且转义 using\不起作用。
我想我已经遇到了扩展方法和LINQ的极端情况.
今天我宣布了一些扩展方法,使我的代码更具可读性.所以我创建了一个获取对象并执行直接转换的扩展方法:
public static class GeneralExtensions
{
public static T Cast<T>(this object o)
{
return (T)o;
}
}
Run Code Online (Sandbox Code Playgroud)
目的是能够通过以下方式调用我的直接铸件:
MyObject.CastTo<MyInterface>();
Run Code Online (Sandbox Code Playgroud)
碰巧在同一个命名空间中我有一个具有LINQ表达式的扩展方法
using System;
using System.Collections.Generic;
using System.Linq;
public static class EnumExtenstions
{
public static IEnumerable<string> UseLinq(this IEnumerable<object> collection)
{
return (from object value in collection select value.ToString() ).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
将第一个扩展方法添加到我的代码库会导致下一个错误
Error CS1936 Could not find an implementation of the query pattern for source type 'object'. 'Select' not found.
Run Code Online (Sandbox Code Playgroud)
将两种扩展方法放在不同的命名空间(而不是引用),或重命名Cast为不同的名称解决问题.
我想更多地了解为什么会发生这种情况.它与LINQ有些重叠吗?如果是这样,为什么我Cast优先考虑?
在.NET Fiddle(Link)中找到代码
我试图将我的 ANTLR4 语法拆分为多个文件,以便我可以更轻松地测试它们,我在 java 项目中使用 gradle 作为构建工具。
两种语法都可以单独正确编译,但是当我将导入添加到我的主语法时,我得到下一个编译错误
错误(110):kanekotic/specflow/rider/SpecflowFeature.g4:3:7:无法找到或加载语法SpecflowScenario
该inherited语法看起来像:
grammar SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
scenario
: 'Scenario: ';
Run Code Online (Sandbox Code Playgroud)
和main语法看起来像:
grammar SpecflowFeature;
import SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
file returns [List<String> values]
@init { $values = new ArrayList<String>(); }
: 'Feature: ' EOF;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这是不允许的吗?
编辑:
的gradle.build样子:
plugins {
id "org.jetbrains.intellij" version "0.1.10"
}
apply plugin: 'org.jetbrains.intellij'
apply plugin: 'java'
apply plugin: 'antlr'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
intellij {
version …Run Code Online (Sandbox Code Playgroud) 我正在使用travis-ci部署我的开源项目。自从我的代码没有更改以来,自昨天以来,我所有的构建都无法运行单元测试,并出现下一个错误:
~/w/some-package ??? yarn test
yarn run v1.13.0
$ jest
FAIL test/unit/lib/sometest.js
? Test suite failed to run
TypeError: Cannot assign to read only property 'Symbol(Symbol.toStringTag)' of object '#<process>'
at _default (node_modules/jest-util/build/createProcessObject.js:85:34)
Run Code Online (Sandbox Code Playgroud)
我的构建配置使用最新的节点并仅运行测试
language: node_js
node_js:
- node
script:
- yarn test
Run Code Online (Sandbox Code Playgroud)
travis-ci机器的依存关系是否有变化?node和jest的版本之间有兼容性吗?
jestjs ×2
node.js ×2
react-native ×2
.net ×1
antlr ×1
antlr4 ×1
c# ×1
gradle ×1
java ×1
linq ×1
mocking ×1
package.json ×1
parsing ×1
travis-ci ×1
unit-testing ×1