我正在尝试使用以下代码重新创建ngrx/store示例项目,我知道这对于TODO应用程序来说有点过分,但是想要了解这些概念:
// State Model
interface Todo {
id: number;
text: string;
completed: boolean;
}
interface TodoState {
entities: Todo[];
}
interface AppState {
todos: TodoState;
}
// State Retrieval
getTodos() {
return (state: Observable<TodoState>) => state.select(s => s.entities);
}
getTodoState() {
return (state: Observable<AppState>) => state.select(s => s.todos);
}
getTodosCollection() {
return compose(this.getTodos(), this.getTodoState());
}
@Component({...})
class App {
// I'd think I should be able to type this to Array<Todo>,
// but that throws a compile-time error.
// Also, …Run Code Online (Sandbox Code Playgroud) 给定存储库
public interface ResourceRepository extends CrudRepository<Resource, Long> { ... }
Run Code Online (Sandbox Code Playgroud)
以下测试代码:
@WebMvcTest
@RunWith(SpringRunner.class)
public class RestResourceTests {
@Autowired
private MockMvc mockMvc;
@Test
public void create_ValidResource_Should201() {
String requestJson = "...";
mockMvc.perform(
post("/resource")
.content(requestJson)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isCreated()); // This fails with 404
}
}
Run Code Online (Sandbox Code Playgroud)
为了解决此问题,我需要注入WebApplicationContext和手动创建MockMvc对象,如下所示:
@SpringBootTest
@RunWith(SpringRunner.class)
public class RestResourceTests {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup() {
this.mockMvc = webAppContextSetup(webApplicationContext).build();
}
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来实现这一目标?
谢谢!
number 具有 num.toString(2)
我想知道是否有一种方法来获取字符串'Hello world',并将其转换为ASCII二进制表示.
谢谢!
我一直试图通过express node.js项目将单元测试与我的Backbone模型集成,并且难以准确掌握如何完成此任务.(旁注:我来自很多Java背景,我意识到存在差异,但我喜欢到目前为止节点开发环境的简洁和优雅.)
我的问题源于以下问题,骨干模型需要暴露给浏览器才能在其中运行,而通过mocha进行测试是节点运行时环境中的"服务器端".
这是我所说的一个例子:
模型文件:/public/js/backbone/models.js
var SomeModel = Backbone.Model.extend({...});
Run Code Online (Sandbox Code Playgroud)
服务器端测试:/test/backbone/models-test.js
???
Run Code Online (Sandbox Code Playgroud)
我写 ???因为通过服务器端的正常单元测试你只需:
var SomeModule = require('./someModule');
Run Code Online (Sandbox Code Playgroud)
并开始你的快乐方式.显然,由于浏览器没有在Node中运行,因此模块不易获得.
我已经阅读了一些帖子,说明你需要在require.js中包装你的浏览器端javascript,这会将这些javascript文件自动放入节点命名空间,允许你执行一个需求并继续进行测试.但是,我还没有找到完成这项任务的连贯方式,而且我一直试图寻找一些例子,但似乎找不到适用的东西.当然,很可能我对这个框架一般缺乏知识,因为我仍然围绕着如何在javascript中注入事物,注入依赖关系等的整个想法.
任何帮助都会非常感激,如果这个问题已被问过一百万次了,我很抱歉,我确信它已经问了,而且我的问题也不正确.
提前致谢.
node.js ×2
angular ×1
ascii ×1
backbone.js ×1
binary ×1
express ×1
javascript ×1
mocha.js ×1
ngrx ×1
rxjs ×1
spring-boot ×1
string ×1